SetWindowstext ?

elyote666 Messages postés 30 Date d'inscription lundi 17 mai 2004 Statut Membre Dernière intervention 4 octobre 2007 - 19 mars 2005 à 01:34
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 19 mars 2005 à 18:14
Voila, mon nouveau problème ...
Quand j'utilise l'api dans un programme VB ça fonctionne, mais pas dans les
programmes extèrieur ...pkoi ?
Merci de vos réponses ...

10 réponses

PiterTheWood Messages postés 48 Date d'inscription samedi 19 avril 2003 Statut Membre Dernière intervention 23 mars 2007 1
19 mars 2005 à 02:18
Pour controler tes applications extérieurs il faut que tu utilises son Handle

Pour ce faire tu doit rechercher le handle d'une fenêtre avec l'API FindWindow

Après tu recherches ses enfants (ses controle utilisateur edit, button, etc) avec l'API FindWindowsEx

Piter The Wood
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
19 mars 2005 à 02:19
Pourtant j'ai essayé avec un programme VB externe ça marche.
j'ai essayé avec cette page ici même ça marche aussi, il est en train de m'afficher "Bonjour" à la place du titre original.
peut-être le titre est changé par le programme lui même comme on peut le faire en VB avec Me.Caption.

Daniel
0
cs_max12 Messages postés 1491 Date d'inscription dimanche 19 novembre 2000 Statut Modérateur Dernière intervention 7 juillet 2014
19 mars 2005 à 04:13
Avec le bon handle ça devrait fonctionner.

@+





MSN : x_men_40@hotmail.com
0
elyote666 Messages postés 30 Date d'inscription lundi 17 mai 2004 Statut Membre Dernière intervention 4 octobre 2007
19 mars 2005 à 10:09
Merci de vos réponses !
Pour le handle j'ai choppé un bout de code qui me le donne quand je passe
le curseur sur le contrôle désiré .
J'ai essayer sur une textbox dans mon programme vb sa marche mais dès
que j'essaye ailleurs... problème ?

voilà le code :

petite explication
j'ai un label (affiche le handle)
un text1 (je rentre le handle qui m'intéresse)
un bouton "go" pour faire changer le handle
un text2 (Pour tester ... dans ce controle setwindowstext fontionne)
un timer

------------------------------------------------------------------------------
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long


Dim position As POINTAPI
Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long

Je pense que le problème doit se situer ici :


Private Sub Command1_Click()
Call SetWindowText(Text1.Text, "Bonjour !")
End Sub


Private Sub Form_Load()
Timer1.Interval = 1
End Sub


Private Sub Timer1_Timer()
Call GetCursorPos(position)
Label1 = WindowFromPoint(position.x, position.y)
End Sub

----------------------------------------------------------------------------

Ce qui m'as fait douter c'est cette explication que j'ai trouver un site :

"SetWindowText change le texte d'une fenêtre donnée. Bien que cette fonction puisse changer le texte de fenêtre d'autres programmes, il ne peut pas changer le texte d'un contrôle utilisé par une autre application. Pour changer le texte de ces contrôles, utiliser le message
WM_SETTEXT
à la place."

=ficheapi&t=f&n=SetWindowText http://centrewd.free.fr/?page=ficheapi&t=f&n=SetWindowText

Merci d'avoir lu jusque ici
0

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

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
19 mars 2005 à 13:19
Exact, tu peux changer le titre d'une fenetre mère avec SetWindowText mais pas de ses enfants (controles).

SendMessage(hctrl, WM_SETTEXT, 0, ptrText);

ciao...
BruNews, MVP VC++
0
elyote666 Messages postés 30 Date d'inscription lundi 17 mai 2004 Statut Membre Dernière intervention 4 octobre 2007
19 mars 2005 à 17:00
Merci de ta réponse, sa me rassure !
Eske tu pourrais préciser pour l'utilisation de cette API ?
ou si tu as un lien où c'est expliqué ....
merci
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
19 mars 2005 à 17:15
ben tu as tout ce qu'il faut, fais une declare de ce type:
Declare Sub SetCtrlText Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal pText As String)

SetCtrlText hctrl, WM_SETTEXT, 0, mastring

ciao...
BruNews, MVP VC++
0
elyote666 Messages postés 30 Date d'inscription lundi 17 mai 2004 Statut Membre Dernière intervention 4 octobre 2007
19 mars 2005 à 18:02
pkoi sa ne fonctionne pas ?

Private Declare Sub SetCtrlText Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal pText As String)


Private Sub Command1_Click()
Dim a
a = Text1.Text 'Dans ma textBox il ya le handle
SetCtrlText a, WM_SETTEXT, 0, "Bonjour!"
End Sub

Où est l'erreur ? Merci d'avance ...
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
19 mars 2005 à 18:12
tu as pas défini le type de a, et là il a pris String donc ça doit pas lui plaire.

Dim a As Long

Daniel
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
19 mars 2005 à 18:14
Dim a As Long, déclare correctement tes variables !!!

que fait un handle dans un textbox, tu es certain de sa validité ???
S'il est bon, ça doit fonctionner.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous