Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
ng
Salut,
Bonsoir
Pourriez-vous m'orienter vers l'utilisation de cette commande pour le pilotage de certains fonctions d'un programme VB
Je sais récupérer les événements de certaines touches mais pas ceux des spéciales
J'ai trouvé ce lien http://tcharles.developpez.com/ATI/ mais il ne m'aide pas vraiment...
Sans plugin spécifique (genre vbAdvance) tu ne pourras pas compiler de telles DLLs (seulement du COM en vb...) et il faudra te tourner vers du C ou C++ (ca sera en plus plus facile je pense).
Ce que tu peux faire par exemple c'est faire un composant COM en C++ (avec ATL) qui servira de plugin, tu pourras ainsi l'appeler en VB facilement (ca servira ainsi d'interface/de wrapper pour vb).
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/
Salut,
Bonsoir
Pourriez-vous m'orienter vers l'utilisation de cette commande pour le
pilotage de certains fonctions d'un programme VB
Je sais récupérer les événements de certaines touches mais pas ceux des
spéciales
J'ai trouvé ce lien http://tcharles.developpez.com/ATI/ mais il ne m'aide
pas vraiment...
Sans plugin spécifique (genre vbAdvance) tu ne pourras pas compiler de
telles DLLs (seulement du COM en vb...) et il faudra te tourner vers du C
ou C++ (ca sera en plus plus facile je pense).
Ce que tu peux faire par exemple c'est faire un composant COM en C++ (avec
ATL) qui servira de plugin, tu pourras ainsi l'appeler en VB facilement (ca
servira ainsi d'interface/de wrapper pour vb).
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
Pourriez-vous m'orienter vers l'utilisation de cette commande pour le pilotage de certains fonctions d'un programme VB
Je sais récupérer les événements de certaines touches mais pas ceux des spéciales
J'ai trouvé ce lien http://tcharles.developpez.com/ATI/ mais il ne m'aide pas vraiment...
Sans plugin spécifique (genre vbAdvance) tu ne pourras pas compiler de telles DLLs (seulement du COM en vb...) et il faudra te tourner vers du C ou C++ (ca sera en plus plus facile je pense).
Ce que tu peux faire par exemple c'est faire un composant COM en C++ (avec ATL) qui servira de plugin, tu pourras ainsi l'appeler en VB facilement (ca servira ainsi d'interface/de wrapper pour vb).
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/
TouTi
Nicolas
Sans plugin spécifique (genre vbAdvance) tu ne pourras pas compiler de telles DLLs (seulement du COM en vb...) et il faudra te tourner vers du C ou C++ (ca sera en plus plus facile je pense).
Bah j'ai du me résoudre à faire un peu de C++. Avec commande, son créateur donner le moyen de créer un plugins http://www.ati.com/developer/ammosdk.html, il suffit de modifier le contenu certains fichiers, compiler et créer la dll.
Mais j'ai qd même quelques soucis :
* Ce plug teste la présence de l'application à contrôler en utilisant le classname des fenêtres actives : Malheureusement en VB ce nom est ingérable : Tous les programmes créés en VB portent le même nom... J'ai du passer par le WindowName.
HWND hltd = FindWindow(0,"Nom_de_ma_fenetre"); //handle recherché HWND hForeground = GetForegroundWindow(); //handle fenêtre active if (hltd == NULL)// Appli is not running { MessageBox( 0, "pas pret", "Greetings", 0 ); return FALSE; } else { SetForegroundWindow(hltd); return TRUE; }
* Lorsque le plug a trouvé que l'application est active(voir si dessus), il peut envoyer des messages avec postmessage Exemple : si la touche RMCTRL_RESIZE est appuyée, un message avec parametre est envoyé case RMCTRL_RESIZE: PostMessage(hltd, WM_COMMAND, 40165, 0); return TRUE;
Pour récupérer les messages, dans mon programme VB j'utilise :
**ds module Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public OldWindowProc As Long Public Const GWL_WNDPROC = -4 Public Const WM_COMMAND = &H111
Public Function NewWindowProc(ByVal hWnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long If msg = WM_COMMAND Then Form1.Label1 = lParam & "/1/" & wParam NewWindowProc = CallWindowProc(OldWindowProc, hWnd, msg, wParam, lParam) End Function
Dans la mdiform Private Sub MDIForm_Load() OldWindowProc = SetWindowLong(Me.hWnd, GWL_WNDPROC, AddressOf NewWindowProc) End Sub Private Sub MDIForm_Unload(Cancel As Integer) Ret& = SetWindowLong(Me.hwnd, GWL_WNDPROC, oldWndProc) End Sub
* Ds un projet simple contenant seulement une mdiform et une childform portant en caption le même nom tout va bien sauf lorsque la childform est agrandie : Ds ce cas le plug ne trouve pas la fenêtre à utiliser pour envoyer les post???
* Appliquer à mon programme les post ne sont même pas reçus... ??? pourquoi telle est la question????
Est-ce une mauvaise gestion des Handles des formes ou une incompatibilité des fonctions de mon programme???
TouTi --
Nicolas
Sans plugin spécifique (genre vbAdvance) tu ne pourras pas compiler de
telles DLLs (seulement du COM en vb...) et il faudra te tourner vers du C
ou C++ (ca sera en plus plus facile je pense).
Bah j'ai du me résoudre à faire un peu de C++. Avec commande, son créateur
donner le moyen de créer un plugins
http://www.ati.com/developer/ammosdk.html, il suffit de modifier le contenu
certains fichiers, compiler et créer la dll.
Mais j'ai qd même quelques soucis :
* Ce plug teste la présence de l'application à contrôler en utilisant le
classname des fenêtres actives : Malheureusement en VB ce nom est ingérable
: Tous les programmes créés en VB portent le même nom... J'ai du passer par
le WindowName.
HWND hltd = FindWindow(0,"Nom_de_ma_fenetre"); //handle recherché
HWND hForeground = GetForegroundWindow(); //handle fenêtre active
if (hltd == NULL)// Appli is not running
{ MessageBox( 0, "pas pret", "Greetings", 0 ); return FALSE; }
else { SetForegroundWindow(hltd); return TRUE; }
* Lorsque le plug a trouvé que l'application est active(voir si dessus), il
peut envoyer des messages avec postmessage
Exemple : si la touche RMCTRL_RESIZE est appuyée, un message avec
parametre est envoyé
case RMCTRL_RESIZE:
PostMessage(hltd, WM_COMMAND, 40165, 0);
return TRUE;
Pour récupérer les messages, dans mon programme VB j'utilise :
**ds module
Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal
lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal msg As Long, ByVal wParam
As Long, ByVal lParam As Long) As Long
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal
hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public OldWindowProc As Long
Public Const GWL_WNDPROC = -4
Public Const WM_COMMAND = &H111
Public Function NewWindowProc(ByVal hWnd As Long, ByVal msg As Long, ByVal
wParam As Long, ByVal lParam As
Long) As Long
If msg = WM_COMMAND Then Form1.Label1 = lParam & "/1/" & wParam
NewWindowProc = CallWindowProc(OldWindowProc, hWnd, msg, wParam, lParam)
End Function
Dans la mdiform
Private Sub MDIForm_Load()
OldWindowProc = SetWindowLong(Me.hWnd, GWL_WNDPROC, AddressOf
NewWindowProc)
End Sub
Private Sub MDIForm_Unload(Cancel As Integer)
Ret& = SetWindowLong(Me.hwnd, GWL_WNDPROC, oldWndProc)
End Sub
* Ds un projet simple contenant seulement une mdiform et une childform
portant en caption le même nom tout va bien sauf lorsque la childform est
agrandie : Ds ce cas le plug ne trouve pas la fenêtre à utiliser pour
envoyer les post???
* Appliquer à mon programme les post ne sont même pas reçus... ???
pourquoi telle est la question????
Est-ce une mauvaise gestion des Handles des formes ou une incompatibilité
des fonctions de mon programme???
Sans plugin spécifique (genre vbAdvance) tu ne pourras pas compiler de telles DLLs (seulement du COM en vb...) et il faudra te tourner vers du C ou C++ (ca sera en plus plus facile je pense).
Bah j'ai du me résoudre à faire un peu de C++. Avec commande, son créateur donner le moyen de créer un plugins http://www.ati.com/developer/ammosdk.html, il suffit de modifier le contenu certains fichiers, compiler et créer la dll.
Mais j'ai qd même quelques soucis :
* Ce plug teste la présence de l'application à contrôler en utilisant le classname des fenêtres actives : Malheureusement en VB ce nom est ingérable : Tous les programmes créés en VB portent le même nom... J'ai du passer par le WindowName.
HWND hltd = FindWindow(0,"Nom_de_ma_fenetre"); //handle recherché HWND hForeground = GetForegroundWindow(); //handle fenêtre active if (hltd == NULL)// Appli is not running { MessageBox( 0, "pas pret", "Greetings", 0 ); return FALSE; } else { SetForegroundWindow(hltd); return TRUE; }
* Lorsque le plug a trouvé que l'application est active(voir si dessus), il peut envoyer des messages avec postmessage Exemple : si la touche RMCTRL_RESIZE est appuyée, un message avec parametre est envoyé case RMCTRL_RESIZE: PostMessage(hltd, WM_COMMAND, 40165, 0); return TRUE;
Pour récupérer les messages, dans mon programme VB j'utilise :
**ds module Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public OldWindowProc As Long Public Const GWL_WNDPROC = -4 Public Const WM_COMMAND = &H111
Public Function NewWindowProc(ByVal hWnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long If msg = WM_COMMAND Then Form1.Label1 = lParam & "/1/" & wParam NewWindowProc = CallWindowProc(OldWindowProc, hWnd, msg, wParam, lParam) End Function
Dans la mdiform Private Sub MDIForm_Load() OldWindowProc = SetWindowLong(Me.hWnd, GWL_WNDPROC, AddressOf NewWindowProc) End Sub Private Sub MDIForm_Unload(Cancel As Integer) Ret& = SetWindowLong(Me.hwnd, GWL_WNDPROC, oldWndProc) End Sub
* Ds un projet simple contenant seulement une mdiform et une childform portant en caption le même nom tout va bien sauf lorsque la childform est agrandie : Ds ce cas le plug ne trouve pas la fenêtre à utiliser pour envoyer les post???
* Appliquer à mon programme les post ne sont même pas reçus... ??? pourquoi telle est la question????
Est-ce une mauvaise gestion des Handles des formes ou une incompatibilité des fonctions de mon programme???