Application VB;net pour saisie automatique

cs_AlexTheDoctor Messages postés 23 Date d'inscription jeudi 7 décembre 2000 Statut Membre Dernière intervention 8 avril 2010 - 18 nov. 2009 à 16:35
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 - 26 nov. 2009 à 16:35
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

cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
18 nov. 2009 à 16:47
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
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
18 nov. 2009 à 18:42
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.
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
18 nov. 2009 à 18:43
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.
0
cs_AlexTheDoctor Messages postés 23 Date d'inscription jeudi 7 décembre 2000 Statut Membre Dernière intervention 8 avril 2010
19 nov. 2009 à 11:34
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
19 nov. 2009 à 11:56
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
0
cs_AlexTheDoctor Messages postés 23 Date d'inscription jeudi 7 décembre 2000 Statut Membre Dernière intervention 8 avril 2010
26 nov. 2009 à 16:27
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
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
26 nov. 2009 à 16:35
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.
0
Rejoignez-nous