Transmission de message

Résolu
shadow1779 Messages postés 706 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2013 - 6 avril 2006 à 19:11
shadow1779 Messages postés 706 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2013 - 7 avril 2006 à 17:38
Bonsoir,

je voulais savoir si il était possible et si oui par quel moyen, de transmettre un message a une fenetre, je m'explique, on a un programme, et on veux que quand on clic sur un bouton par exemple; un texte s'affiche dans la textbox d'un autre programme, cependant cet autre programme n'a pas été fabriqué par nous, et on ne dispose pas de son code source

Merci d'avance

.

10 réponses

clementio Messages postés 432 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 février 2014 1
7 avril 2006 à 07:34
Crée un projet avec un Form contenat un bouton (Command1) et un module.

Colle ça dans le Form:

Option Explicit

Private Sub Command1_Click()
EcrireToto
End Sub

Private Sub Form_Load()
Shell "notepad.exe", vbNormalFocus
End Sub



Et ça dans le module:

Option Explicit

Private Declare Function EnumChildWindows Lib "user32" (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString 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 Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Const WM_CHAR = &H102

Public Sub EcrireToto()

Dim lHwnd As Long

lHwnd = FindWindow(vbNullString, "Sans titre - Bloc-notes")

If lHwnd Then
EnumChildWindows lHwnd, AddressOf EnumChildProc, ByVal 0&
End If

End Sub

Private Function EnumChildProc(ByVal hwnd As Long, ByVal lParam As Long) As Long

On Error Resume Next

Dim sClasse As String
Dim lRetVal As Long

sClasse = Space$(256)
lRetVal = GetClassName(hwnd, sClasse, 256)
sClasse = Left$(sClasse, lRetVal)

If sClasse = "Edit" Then
SendMessage hwnd, WM_CHAR, vbKeyT, ByVal 0&
SendMessage hwnd, WM_CHAR, vbKeyO, ByVal 0&
SendMessage hwnd, WM_CHAR, vbKeyT, ByVal 0&
SendMessage hwnd, WM_CHAR, vbKeyO, ByVal 0&
End If

EnumChildProc = 1

End Function




Teste et dis moi si ça marche...
3
yohann2004 Messages postés 36 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 7 août 2007
6 avril 2006 à 20:42
Si tu n'as pas la source de l'autre programme c'est mission impossible ! Sinon tu peux utiliser DCOM, un fichier intermediaire ...
0
mongol77 Messages postés 75 Date d'inscription dimanche 2 octobre 2005 Statut Membre Dernière intervention 24 juin 2007
6 avril 2006 à 21:42
a la limite , tu pourrait simuler le déplacement de la souris sur ce textbox , simuler un clic et entrer un nombre

mais ca me parait bien compliqué pour pas grand chose

c'est pour quel programme exactement ?
0
clementio Messages postés 432 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 février 2014 1
7 avril 2006 à 02:50
La seule chose que tu as besoin de connaître, c'est la Handle du TextBox à modifier.

Pour cela, utilise Spy++ (disponible sur le CD de VB6). Il te permet de connaître tout sur les fenêtres, les classes, les messages...

Ensuite il te faut connaître le Handle de la fenêtre qui contient le TextBox. Avec un FindWindow(vbNullString, "nom_fenêtre") tu peux le récupèrer.
Après, tu énumères les fenêtres "filles" jusqu'à trouver ton TextBox (c'est là que Spy++ peut t'aider).
Pour finir, avec un SetWindowText sur ce handle, le tour est joué!!!

Je peux te donner un exemple de code mais pour ça il me faut plus de détails sur le prog cible...

Bon courage, Clm.
0

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

Posez votre question
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
7 avril 2006 à 06:57
Salut Clementio !

Est ce que ton message peux s'appliquer à mon problème :

http://www.vbfrance.com/infomsg/NOM-TEXTBOX-APPLI-INCONNUE-MSOFFICE-LOGICIEL-CASCADE-POUR-1_679547.aspx

Si oui c'est trop fort ! (en passant par VBA Word)

Merci

Mortalino
0
clementio Messages postés 432 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 février 2014 1
7 avril 2006 à 07:01
Je n'en sais rien. Pour cela utilise Spy++ et essaies de te renseigner sur tes TextBox. Après avec des API tu peux te débrouiller pour faire ce que tu as besoin.
0
shadow1779 Messages postés 706 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2013
7 avril 2006 à 07:13
bein par exemple je ne sais pas, tu ouvre notepad, et quand tu clic sur le bouton de ton winform sa affiche "toto" dans la fenetre de notepad :)

je n'ai pas encore d'utilisation concrète a faire pour le moment, mais je pense que ca peux servire.

PS: je ne trouve pas d'executable de spy++? aurait tu un lien?
0
clementio Messages postés 432 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 février 2014 1
7 avril 2006 à 07:20
Il est dans le dossier Tools du CD1 de VB6.

Et je vais te donner un exemple avec le notepad...
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
7 avril 2006 à 07:40
Salut Clementio !

A l'occaz je testerai voir si ça fonctionne.

Merci & @ +

Mortalino
0
shadow1779 Messages postés 706 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2013
7 avril 2006 à 17:38
merci de ton aide
0
Rejoignez-nous