Application VB;net pour saisie automatique

Signaler
Messages postés
23
Date d'inscription
jeudi 7 décembre 2000
Statut
Membre
Dernière intervention
8 avril 2010
-
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
-
Bonjour à tous.

J'ai un petit problème je n'arrive pas à voir comment faire mon application.

Je voudrai savoir comment on peut saisir automatiquement avec une application VB.net des champs de saisie dans une autre application.

J'ai vu la fonction sendkeys mais comment peut-on préciser les champs que l'on veut saisir?

Est-ce quelqu'un pourrait m'aider svp.

Merci bcp!!!

Alex

7 réponses

Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
16
Salut,

SendKeys envoi effectivement les commandes clavier simuler a une application, or je ne suis pas sûr que tu puisse directement spécifier le champs voulu, il faudrat donc se contentez d'utiliser les tabulations pour te déplacer au travers de l'application, a moins peut-être de récupérer son Handle mais je ne suis pas sûr que l'on le peux sur une textbox par exemple

Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
MCPD (webform-winform) / MCSA / MCDST / MCT
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
38
heu... si je ne dis pas de betises, j'avais vu ca en vb6.

on utilisait l'api GetWindow (ou GetWindowText un truc comme ca) pour trouver le handle d'une fenêtre par sont texte, en suite grâce à une autre API on pouvait avoir la liste des handles enfants de ce formulaire (ses contrôles), et travailler directement dessus, c'est comme cela que l'on pouvait passer des sécurité de certain programmes ou afficher les caractères passés en passwordchar des textbox.

C'est effectivement possible, tout se trouve au niveau API, après pour dire lesquelles...

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
38
Ah oui, sendmessage et getmessage pour communiquer avec le contrôle et obtenir ou définir ses propriétés.


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Messages postés
23
Date d'inscription
jeudi 7 décembre 2000
Statut
Membre
Dernière intervention
8 avril 2010

Merci pour vos réponses.

J'ai encore un petit soucis
il me dit Type DllImport non défini :
- est ce qu'il faut importer une librairie et si oui laquelle?
- est-ce qu'il faut rajouter une référence à la user32.dll"?


<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function FindWindow( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As IntPtr
End Function

Merci d'avance.

Alex
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
16
Salut,

Simplement tu as oublier :

Import System.Runtime.InteropServices

Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
MCPD (webform-winform) / MCSA / MCDST / MCT
Messages postés
23
Date d'inscription
jeudi 7 décembre 2000
Statut
Membre
Dernière intervention
8 avril 2010

Merci pour ta réponse Chris.

J'ai une autre petite question pour vous....
Je ne comprends pas pourquoi il ne me ferme pas ma fenêtre!!!
pourtant j'inscris bien le nom de mon programme!!
et il ne m'affiche même pas :
MsgBox("Impossible de trouver la fenêtre !", vbExclamation)
Donc il trouve bien la fenêtre non??
Aidez SVP, je vais craquer!!

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Private Const WM_CLOSE = CInt(&H10)

Function Form_Load()
Dim hWnd As Long
hWnd = FindWindow(vbNullString, "monprogramme")
If hWnd <> 0 Then
Call PostMessage(hWnd, WM_CLOSE, 0, 0)
Else
MsgBox("Impossible de trouver la fenêtre !", vbExclamation)
End If
End Function


Merci beaucoup!

Alex
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
38
Re,

Call PostMessage(hWnd, WM_CLOSE, 0, 0)


Le message est pourtant claire ?! Non ?

Autre chose, en .Net lors de la conversion des API de vb6, les long(vb6) doivent être convertis en Interger(.Net) :

Private Declare Function FindWindow Lib "user32" _
                 Alias "FindWindowA" ( _ 
                 ByVal lpClassName As String, _
                 ByVal lpWindowName As String _ 
                 ) As Integer

Private Declare Function PostMessage Lib "user32" _
                 Alias "PostMessageA" ( _ 
                 ByVal hWnd As Integer, _
                 ByVal wMsg As Integer, _
                 ByVal wParam As Integer, _
                 ByVal lParam As Integer _
                 ) As Integer


++ Mayzz.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.