Simuler un clic sur une fenêtre invisible
Simuler un clic sur une fenêtre invisible
La question est résumée dans le titre.
Il est possible de créer des fenêtres invisibles (#PB_Window_Invisible) , il est possible de simuler un clic de la souris (mouse_event_(#MOUSEEVENTF_LEFTDOWN,0,0,0,0) par exemple). Est-il possible de faire les 2 à la fois c'est à dire de faire cliquer l'utilisateur sur un bouton par exemple de ma fenêtre invisible ? Ou une autre solution serais de faire ça en dehors de l'écran visible de l'utilisateur. Mais s'il est possible d'ouvrir une fenêtre en dehors de l'ecran il n'est pas possible de faire aller la souris en dehors de l'ecran (en tout cas pas avec SetCursorPos_(sourisX ,sourisY) ). Est-ce que quelqu'un voit une solution ?
Il est possible de créer des fenêtres invisibles (#PB_Window_Invisible) , il est possible de simuler un clic de la souris (mouse_event_(#MOUSEEVENTF_LEFTDOWN,0,0,0,0) par exemple). Est-il possible de faire les 2 à la fois c'est à dire de faire cliquer l'utilisateur sur un bouton par exemple de ma fenêtre invisible ? Ou une autre solution serais de faire ça en dehors de l'écran visible de l'utilisateur. Mais s'il est possible d'ouvrir une fenêtre en dehors de l'ecran il n'est pas possible de faire aller la souris en dehors de l'ecran (en tout cas pas avec SetCursorPos_(sourisX ,sourisY) ). Est-ce que quelqu'un voit une solution ?
__________________________________________
Débutant les tutoriels de mon site sont la pour vous n'hésitez pas à aller les voir: http://tripamort.free.fr/
__________________________________________
Kayne - Webmaster de http://tripamort.free.fr/
Débutant les tutoriels de mon site sont la pour vous n'hésitez pas à aller les voir: http://tripamort.free.fr/
__________________________________________
Kayne - Webmaster de http://tripamort.free.fr/
Re: Simuler un clic sur une fenêtre invisible
Essaye ça.
Code : Tout sélectionner
Enumeration
#MyWinVisible
#MyWinInvisible
EndEnumeration
Enumeration
#BoutonVisible
#BoutonInvisible
EndEnumeration
Procedure CallBack(hWin, Msg, wParam, lParam)
Result = #PB_ProcessPureBasicEvents
Select Msg
Case #WM_COMMAND
If wParam & $FFFF = #BoutonInvisible And (wParam>>16) & $FFFF = #BN_CLICKED
Debug "Vous m'avez cliqué?"
EndIf
EndSelect
ProcedureReturn Result
EndProcedure
If OpenWindow(#MyWinVisible, 230, 160, 400, 400, "Fenetre visible", #PB_Window_SystemMenu)
ButtonGadget(#BoutonVisible, 10, 10, 100, 20, "Cliquez moi")
EndIf
If OpenWindow(#MyWinInvisible, 0,0,0,0, "Fenetre invisible", #PB_Window_Invisible)
ButtonGadget(#BoutonInvisible, 0, 0, 10, 10, "")
EndIf
SetWindowCallback(@CallBack())
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case #BoutonVisible
SetActiveWindow_(WindowID(#MyWinInvisible))
SendMessage_(GadgetID(#BoutonInvisible), #BM_CLICK, 0, 0)
SetActiveWindow(#MyWinVisible)
EndSelect
Case #PB_Event_CloseWindow
Quit = #True
EndSelect
Until Quit
End
- falsam
- Messages : 7318
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Simuler un clic sur une fenêtre invisible
Code : Tout sélectionner
Procedure HookActionCallBack(nCode, wParam, lParam)
Select wParam
Case #WM_RBUTTONDOWN
Debug "Bouton droit de la souris enfoncé."
Case #WM_RBUTTONUP
Debug "Bouton droit de la souris relaché."
Case #WM_LBUTTONDOWN
Debug "Bouton gauche de la souris enfoncé."
Case #WM_LBUTTONUP
Debug "Bouton gauche de la souris relaché."
Case #WM_MBUTTONDOWN
Debug "Bouton central de la souris enfoncé."
Case #WM_MBUTTONUP
Debug "Bouton central de la souris relaché."
EndSelect
ProcedureReturn CallNextHookEx_(HookHandle, nCode, wParam, lParam)
EndProcedure
;Exécution du Hook
HookMouseHandle = SetWindowsHookEx_(#WH_MOUSE_LL,@HookActionCallBack(), GetModuleHandle_(0),0)
OpenWindow(1, 10, 10, 10, 10, "", #PB_Window_Invisible)
StickyWindow(1, 1)
Repeat
Until WaitWindowEvent()=#PB_Event_CloseWindow
;On libére les Hooks à l'aide de la fonction UnHookWindowsHookEx
UnhookWindowsHookEx_(HookMouseHandle)
Dernière modification par falsam le dim. 22/mai/2011 22:44, modifié 1 fois.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Simuler un clic sur une fenêtre invisible
Merci pour ce code,falsam a écrit :Il y a quelques mois j'avais donné une solution afin de détecter la frappe au clavier en mode furtif depuis n'importe quelle applications windows ou depuis le bureau de window. j'ai amélioré ce code en ajoutant la détection des touche de la souris.P.S. : Non compatible Linux ou MacCode : Tout sélectionner
Structure KBDLLHOOKSTRUCT vkCode.i scanCode.i flags.i Time.i dwExtraInfo.i EndStructure ;Procédure qui devra être appelée lorsque circulera un message de type "Clavier" Procedure HookActionCallBack(nCode, wParam, lParam) Protected *keyBoard.KBDLLHOOKSTRUCT=lParam Dim keyState.b (255) ;Souris Select wParam Case #WM_RBUTTONDOWN Debug "Bouton droit de la souris enfoncé." Case #WM_RBUTTONUP Debug "Bouton droit de la souris relaché." Case #WM_LBUTTONDOWN Debug "Bouton gauche de la souris enfoncé." Case #WM_LBUTTONUP Debug "Bouton gauche de la souris relaché." Case #WM_MBUTTONDOWN Debug "Bouton central de la souris enfoncé." Case #WM_MBUTTONUP Debug "Bouton central de la souris relaché." EndSelect ;Clavier If (nCode=#HC_ACTION) And (wParam = #WM_KEYDOWN) Ascii.w=0 GetKeyboardState_(@KeyState(0)) ;Le paramètre wparam renvoie le code virtuel de la touche ;pour le convertir en Ascii si c'est un caractère, on utilise cette fonction ToAscii_(wParam,(lParam>>16) & $FF ,@KeyState(0),@Ascii,0) Debug Str(*keyBoard\vkCode) + " ("+Chr(*keyBoard\vkCode)+")" EndIf ProcedureReturn CallNextHookEx_(HookHandle, nCode, wParam, lParam) EndProcedure ;Exécution du Hook HookMouseHandle = SetWindowsHookEx_(#WH_MOUSE_LL,@HookActionCallBack(), GetModuleHandle_(0),0) HookKeyBoardHandle=SetWindowsHookEx_(#WH_KEYBOARD_LL, @HookActionCallBack(), 0, 0) OpenWindow(1, 10, 10, 10, 10, "", #PB_Window_Invisible) StickyWindow(1, 1) Repeat Until WaitWindowEvent()=#PB_Event_CloseWindow ;On libére les Hooks à l'aide de la fonction UnHookWindowsHookEx UnhookWindowsHookEx_(HookMouseHandle) UnhookWindowsHookEx_(HookKeyBoardHandle)
par contre chez moi il capte bien les lettres mais pas les : ; / etc.. ça affiche les ¼ ¾ ¿ etc..
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Simuler un clic sur une fenêtre invisible
@falsam,
Quel sont tes sources,, j'ai posté un code en 2009 expliquant comment faire un keylogger, il y a plusieurs bizarreries dans ton code,
GetKeyboardState_(@KeyState(0)) et ToAscii_(wParam,(lParam>>16) & $FF ,@KeyState(0),@Ascii,0) ne serve à rien puisque tu ne te sert pas de la valeur de retour qui est ascii mais de toute façon les paramètres passés ne sont pas bon.
@kaine,
je ne comprend pas ta demande, si tu fait une fenêtre invisible comment savoir si le clic correspond au bouton car justement celui-ci n'est pas visible.
Si tu pouvais expliquer le but de ta demande, la finalité, on serais surement en mesure de t'aider.
si tu veux qu'il se passe quelque chose quand l'utilisateur clique à un endroit précis, tu as juste besoin de getcursorpos_()
Quel sont tes sources,, j'ai posté un code en 2009 expliquant comment faire un keylogger, il y a plusieurs bizarreries dans ton code,
GetKeyboardState_(@KeyState(0)) et ToAscii_(wParam,(lParam>>16) & $FF ,@KeyState(0),@Ascii,0) ne serve à rien puisque tu ne te sert pas de la valeur de retour qui est ascii mais de toute façon les paramètres passés ne sont pas bon.
@kaine,
je ne comprend pas ta demande, si tu fait une fenêtre invisible comment savoir si le clic correspond au bouton car justement celui-ci n'est pas visible.
Si tu pouvais expliquer le but de ta demande, la finalité, on serais surement en mesure de t'aider.
si tu veux qu'il se passe quelque chose quand l'utilisateur clique à un endroit précis, tu as juste besoin de getcursorpos_()
- falsam
- Messages : 7318
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Simuler un clic sur une fenêtre invisible
Je m'étais basé à l'époque sur ce lien ainsi que sur le MSDN consacré aux différentes API. Ayant fait plusieurs essais j'ai oublié de faire du nettoyage.nico a écrit :@falsam,
Quel sont tes sources
La demande de Kaine ne portant que sur les évènements de la souris sur une fenêtre transparente je corrige mon code.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Simuler un clic sur une fenêtre invisible
Non, pas dans son cas.nico a écrit :si tu veux qu'il se passe quelque chose quand l'utilisateur clique à un endroit précis, tu as juste besoin de getcursorpos_()
GetCursorPos() renvoie des coordonnées écran.
Si pour une raison ou une autre, la fenêtre est déplacée, les coordonnées du clic ne sont plus valides.
C'est déjà vrai pour une fenêtre qu'on peut voir, alors pour une fenêtre invisible...

- falsam
- Messages : 7318
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Simuler un clic sur une fenêtre invisible
Quel idée de vouloir cliquer sur une fenêtre invisible !!! :p
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Simuler un clic sur une fenêtre invisible
Je suis désolé mais c'est pas un problème d'adapter les coordonnées écran à la fenêtre, je crois que la fenêtre invisible ne sert à rien dans son cas, il voulait juste trouvé un moyen de capturer un évènement à un endroit précis.
C'est pour cela qu'il aurait été plus judicieux pour lui d'expliquer le problème que de partir sur une idée.
T'es pas couché à cette heure ci, t'as pas de boulot demain
C'est pour cela qu'il aurait été plus judicieux pour lui d'expliquer le problème que de partir sur une idée.
T'es pas couché à cette heure ci, t'as pas de boulot demain

Re: Simuler un clic sur une fenêtre invisible
Je pourrais te retourner la question! 

Re: Simuler un clic sur une fenêtre invisible
C'est à peu près ce que je me suis dit quand j'ai vu son post.falsam a écrit :Quel idée de vouloir cliquer sur une fenêtre invisible !!! :p
Faut avoir l'esprit un peu tordu pour aller faire cliquer un mec sur un bouton qu'on ne peut pas voir!

Re: Simuler un clic sur une fenêtre invisible
@chris C'est pas mal ton code je savais pas qu'on pouvais faire cliquer un bouton tout seul sans l'aide de la souris.
Mais ce que je cherche c'est pas seulement de cliquer sur un bouton dans une fenêtre invisible mais de pouvoir cliquer sur un point repéré par ses coordonnées qu'elles qu'elles soient (on reste dans la fenêtre quand même) et qu'en plus la fenêtre puisse "savoir" que le mec a cliquer et poursuivre les instructions. Comme si je voulais cliquer sur un point particulier d'une image que j'affiche sur une fenêtre invisible..
@falsam Je comprends pas bien ton code je suis très peu familier avec les hooks. Mais j'ai l'impression que je peut savoir quand le mec clique ou non mais je n'est pas l'impression que ce soit "pris en compte" par la fenêtre.
Je comprends qu'un exemple d'application pourrait éclairer un peu ma demande.
Imaginons que je réussisse à lancer le programme de quelqu'un dans une fenêtre que j'ai moi même créé et cette fenêtre est invisible. Je suis sur la page d'accueil du programme (un jeu par exemple)..
Ma demande est la suivante: Comment faire cliquer l'utilisateur à un endroit précis de cette fenêtre invisible et que le programme fasse comme si l'utilisateur avait vraiment cliqué sur cet endroit (si c'est un jeu je voudrais pouvoir cliquer sur le bouton "jouer" et que le jeu se lance effectivement).
Voila j'espere que c'est plus clair.
Mais ce que je cherche c'est pas seulement de cliquer sur un bouton dans une fenêtre invisible mais de pouvoir cliquer sur un point repéré par ses coordonnées qu'elles qu'elles soient (on reste dans la fenêtre quand même) et qu'en plus la fenêtre puisse "savoir" que le mec a cliquer et poursuivre les instructions. Comme si je voulais cliquer sur un point particulier d'une image que j'affiche sur une fenêtre invisible..
@falsam Je comprends pas bien ton code je suis très peu familier avec les hooks. Mais j'ai l'impression que je peut savoir quand le mec clique ou non mais je n'est pas l'impression que ce soit "pris en compte" par la fenêtre.
Je comprends qu'un exemple d'application pourrait éclairer un peu ma demande.
Imaginons que je réussisse à lancer le programme de quelqu'un dans une fenêtre que j'ai moi même créé et cette fenêtre est invisible. Je suis sur la page d'accueil du programme (un jeu par exemple)..
Ma demande est la suivante: Comment faire cliquer l'utilisateur à un endroit précis de cette fenêtre invisible et que le programme fasse comme si l'utilisateur avait vraiment cliqué sur cet endroit (si c'est un jeu je voudrais pouvoir cliquer sur le bouton "jouer" et que le jeu se lance effectivement).
Voila j'espere que c'est plus clair.
__________________________________________
Débutant les tutoriels de mon site sont la pour vous n'hésitez pas à aller les voir: http://tripamort.free.fr/
__________________________________________
Kayne - Webmaster de http://tripamort.free.fr/
Débutant les tutoriels de mon site sont la pour vous n'hésitez pas à aller les voir: http://tripamort.free.fr/
__________________________________________
Kayne - Webmaster de http://tripamort.free.fr/
- falsam
- Messages : 7318
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Simuler un clic sur une fenêtre invisible
Comment demander à un utilisateur de cliquer sur un endroit précis d'une fenetre ....... invisible !!Kayne a écrit :Ma demande est la suivante: Comment faire cliquer l'utilisateur à un endroit précis de cette fenêtre invisible.
Demande lui pour connaitre sa réaction.
Un programme fait ce qu'on lui demande de faire. Il ne fait pas semblant.Kayne a écrit :..... et que le programme fasse comme si l'utilisateur avait vraiment cliqué sur cet endroit (si c'est un jeu je voudrais pouvoir cliquer sur le bouton "jouer" et que le jeu se lance effectivement).
Pour moi non. Les autres je ne sais pas.Kayne a écrit :Voila j'espere que c'est plus clair.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Simuler un clic sur une fenêtre invisible
................
Dernière modification par Backup le sam. 01/oct./2011 9:53, modifié 1 fois.
Re: Simuler un clic sur une fenêtre invisible
Quand vous posez une question, ce serait bien d'essayer de vous expliquer clairement parce que je vous jure qu'il y a des moments, faut vraiment arriver à vous suivre. 
