Bonsoir à tous.
En fouillant dans mon disque dur externe, j'ai retrouvé un projet que je
n'ai pas su finir (ce qui m'arrive fréquement à vrai dire). J'ai voulu m'y
remettre, en pensant que le temps écoulé m'aurait servi d'expérience. Mais
le soucis est que je n'y arrive toujours pas...
Le projet est le suivant, je voudrais pouvoir intercépter le clique gauche
de la souris et le répéter un certain nombre de fois. J'ai tenté de créer un
dll de hook avec, pour un premier temps, la touche contrôle comme
déclencheur, mais je n'y suis pas arrivé. Pourriez-vous m'aider ? Ou me
proposer une autre méthode beaucoup plus simple ?
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
Christian ASTOR
Tao wrote:
Le projet est le suivant, je voudrais pouvoir intercépter le clique gauche de la souris et le répéter un certain nombre de fois. J'ai tenté de créer un dll de hook avec, pour un premier temps, la touche contrôle comme déclencheur, mais je n'y suis pas arrivé. Pourriez-vous m'aider ? Ou me proposer une autre méthode beaucoup plus simple ?
Avec une DLL, il faut utiliser une "Shared Data Section" C'est plus simple de faire sans DLL avec un Low Level Hook. Pour reprendre ton exemple (avec Ctrl Gauche, en testant sur Paint Shop Pro par exemple, il clique bien 5 fois au même endroit) =>
Le projet est le suivant, je voudrais pouvoir intercépter le clique gauche
de la souris et le répéter un certain nombre de fois. J'ai tenté de créer un
dll de hook avec, pour un premier temps, la touche contrôle comme
déclencheur, mais je n'y suis pas arrivé. Pourriez-vous m'aider ? Ou me
proposer une autre méthode beaucoup plus simple ?
Avec une DLL, il faut utiliser une "Shared Data Section"
C'est plus simple de faire sans DLL avec un Low Level Hook.
Pour reprendre ton exemple (avec Ctrl Gauche, en testant sur Paint Shop
Pro par exemple, il clique bien 5 fois au même endroit) =>
Le projet est le suivant, je voudrais pouvoir intercépter le clique gauche de la souris et le répéter un certain nombre de fois. J'ai tenté de créer un dll de hook avec, pour un premier temps, la touche contrôle comme déclencheur, mais je n'y suis pas arrivé. Pourriez-vous m'aider ? Ou me proposer une autre méthode beaucoup plus simple ?
Avec une DLL, il faut utiliser une "Shared Data Section" C'est plus simple de faire sans DLL avec un Low Level Hook. Pour reprendre ton exemple (avec Ctrl Gauche, en testant sur Paint Shop Pro par exemple, il clique bien 5 fois au même endroit) =>
"Christian ASTOR" a écrit dans le message de news: 4921f210$0$28672$
Tao wrote:
Le projet est le suivant, je voudrais pouvoir intercépter le clique gauche de la souris et le répéter un certain nombre de fois. J'ai tenté de créer un dll de hook avec, pour un premier temps, la touche contrôle comme déclencheur, mais je n'y suis pas arrivé. Pourriez-vous m'aider ? Ou me proposer une autre méthode beaucoup plus simple ?
Avec une DLL, il faut utiliser une "Shared Data Section" C'est plus simple de faire sans DLL avec un Low Level Hook. Pour reprendre ton exemple (avec Ctrl Gauche, en testant sur Paint Shop Pro par exemple, il clique bien 5 fois au même endroit) =>
Merci de ta réponse claire et précise, le soucis maintenant est que je n'arrive pas à la réutiliser... (Pas de commentaires). En fait je bloque sur le paramètre hInst... Voici l'utilisation du code que je fais dans un projet C++ classique :
"Christian ASTOR" <castorix@club-internet.fr> a écrit dans le message de
news: 4921f210$0$28672$7a628cd7@news.club-internet.fr...
Tao wrote:
Le projet est le suivant, je voudrais pouvoir intercépter le clique
gauche de la souris et le répéter un certain nombre de fois. J'ai tenté
de créer un dll de hook avec, pour un premier temps, la touche contrôle
comme déclencheur, mais je n'y suis pas arrivé. Pourriez-vous m'aider ?
Ou me proposer une autre méthode beaucoup plus simple ?
Avec une DLL, il faut utiliser une "Shared Data Section"
C'est plus simple de faire sans DLL avec un Low Level Hook.
Pour reprendre ton exemple (avec Ctrl Gauche, en testant sur Paint Shop
Pro par exemple, il clique bien 5 fois au même endroit) =>
Merci de ta réponse claire et précise, le soucis maintenant est que je
n'arrive pas à la réutiliser... (Pas de commentaires).
En fait je bloque sur le paramètre hInst... Voici l'utilisation du code que
je fais dans un projet C++ classique :
"Christian ASTOR" a écrit dans le message de news: 4921f210$0$28672$
Tao wrote:
Le projet est le suivant, je voudrais pouvoir intercépter le clique gauche de la souris et le répéter un certain nombre de fois. J'ai tenté de créer un dll de hook avec, pour un premier temps, la touche contrôle comme déclencheur, mais je n'y suis pas arrivé. Pourriez-vous m'aider ? Ou me proposer une autre méthode beaucoup plus simple ?
Avec une DLL, il faut utiliser une "Shared Data Section" C'est plus simple de faire sans DLL avec un Low Level Hook. Pour reprendre ton exemple (avec Ctrl Gauche, en testant sur Paint Shop Pro par exemple, il clique bien 5 fois au même endroit) =>
Merci de ta réponse claire et précise, le soucis maintenant est que je n'arrive pas à la réutiliser... (Pas de commentaires). En fait je bloque sur le paramètre hInst... Voici l'utilisation du code que je fais dans un projet C++ classique :
Merci de ta réponse claire et précise, le soucis maintenant est que je n'arrive pas à la réutiliser... (Pas de commentaires). En fait je bloque sur le paramètre hInst...
Il faut faire une appli Win32 GUI, pas Console, sinon il faut créer un thread. hInst est le hInstance de WinMain() (= GetModuleHandle(NULL))
Tao wrote:
Merci de ta réponse claire et précise, le soucis maintenant est que je
n'arrive pas à la réutiliser... (Pas de commentaires).
En fait je bloque sur le paramètre hInst...
Il faut faire une appli Win32 GUI, pas Console, sinon il faut créer un
thread.
hInst est le hInstance de WinMain() (= GetModuleHandle(NULL))
Merci de ta réponse claire et précise, le soucis maintenant est que je n'arrive pas à la réutiliser... (Pas de commentaires). En fait je bloque sur le paramètre hInst...
Il faut faire une appli Win32 GUI, pas Console, sinon il faut créer un thread. hInst est le hInstance de WinMain() (= GetModuleHandle(NULL))
Tao
"Christian ASTOR" a écrit dans le message de news: 4922be7e$0$28670$
Il faut faire une appli Win32 GUI, pas Console, sinon il faut créer un thread. hInst est le hInstance de WinMain() (= GetModuleHandle(NULL))
Bonsoir à tous (encore). Je suis désolé d'avoir autant de mal mais j'ai l'impression (ou plutôt la certitude) que le hook lancé s'arrête quasi-aussitôt. Le problème est que je ne sais pas comment faire pour que le hook fonctionne en continu et qu'à chaque touche appuyée, la fonction de traitement la compare à la touche contrôle et que si cela correspond, alors il simule le clic gauche de la souris.
int WINAPI WinMain(HINSTANCE a, HINSTANCE b, LPSTR c, int d) { hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, a, 0); if(hKeyboardHook == NULL) { printf("Le hook n'a pas pu être lancénn"); getchar(); }
Ps : Merci de votre prochaine aide et veuillez m'excuser si je suis un peu "lent à la détente" mais j'ai un peu de mal avec l'API Windows, bien qu'elle soit très pratique.
"Christian ASTOR" <castorix@club-internet.fr> a écrit dans le message de
news: 4922be7e$0$28670$7a628cd7@news.club-internet.fr...
Il faut faire une appli Win32 GUI, pas Console, sinon il faut créer un
thread.
hInst est le hInstance de WinMain() (= GetModuleHandle(NULL))
Bonsoir à tous (encore). Je suis désolé d'avoir autant de mal mais j'ai
l'impression (ou plutôt la certitude) que le hook lancé s'arrête
quasi-aussitôt. Le problème est que je ne sais pas comment faire pour que le
hook fonctionne en continu et qu'à chaque touche appuyée, la fonction de
traitement la compare à la touche contrôle et que si cela correspond, alors
il simule le clic gauche de la souris.
int WINAPI WinMain(HINSTANCE a, HINSTANCE b, LPSTR c, int d)
{
hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc,
a, 0);
if(hKeyboardHook == NULL)
{
printf("Le hook n'a pas pu être lancénn");
getchar();
}
Ps : Merci de votre prochaine aide et veuillez m'excuser si je suis un peu
"lent à la détente" mais j'ai un peu de mal avec l'API Windows, bien qu'elle
soit très pratique.
"Christian ASTOR" a écrit dans le message de news: 4922be7e$0$28670$
Il faut faire une appli Win32 GUI, pas Console, sinon il faut créer un thread. hInst est le hInstance de WinMain() (= GetModuleHandle(NULL))
Bonsoir à tous (encore). Je suis désolé d'avoir autant de mal mais j'ai l'impression (ou plutôt la certitude) que le hook lancé s'arrête quasi-aussitôt. Le problème est que je ne sais pas comment faire pour que le hook fonctionne en continu et qu'à chaque touche appuyée, la fonction de traitement la compare à la touche contrôle et que si cela correspond, alors il simule le clic gauche de la souris.
int WINAPI WinMain(HINSTANCE a, HINSTANCE b, LPSTR c, int d) { hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, a, 0); if(hKeyboardHook == NULL) { printf("Le hook n'a pas pu être lancénn"); getchar(); }
Ps : Merci de votre prochaine aide et veuillez m'excuser si je suis un peu "lent à la détente" mais j'ai un peu de mal avec l'API Windows, bien qu'elle soit très pratique.
Christian ASTOR
Tao wrote:
Bonsoir à tous (encore). Je suis désolé d'avoir autant de mal mais j'ai l'impression (ou plutôt la certitude) que le hook lancé s'arrête quasi-aussitôt. Le problème est que je ne sais pas comment faire pour que le hook fonctionne en continu et qu'à chaque touche appuyée
Parce qu'il n'y a pas de Message Loop. Il suffit de partir du Winzard Win32 de VC++ ou VS.NET. Par ex, avec ajout touche F11 pour arrêter le Hook =>
Bonsoir à tous (encore). Je suis désolé d'avoir autant de mal mais j'ai
l'impression (ou plutôt la certitude) que le hook lancé s'arrête
quasi-aussitôt. Le problème est que je ne sais pas comment faire pour que le
hook fonctionne en continu et qu'à chaque touche appuyée
Parce qu'il n'y a pas de Message Loop.
Il suffit de partir du Winzard Win32 de VC++ ou VS.NET.
Par ex, avec ajout touche F11 pour arrêter le Hook =>
Bonsoir à tous (encore). Je suis désolé d'avoir autant de mal mais j'ai l'impression (ou plutôt la certitude) que le hook lancé s'arrête quasi-aussitôt. Le problème est que je ne sais pas comment faire pour que le hook fonctionne en continu et qu'à chaque touche appuyée
Parce qu'il n'y a pas de Message Loop. Il suffit de partir du Winzard Win32 de VC++ ou VS.NET. Par ex, avec ajout touche F11 pour arrêter le Hook =>
Je vous remercie pour votre aide très précieuse ainsi que pour votre patiente. Grâce à vous, je crois avoir saisi les contours des hooks de windows et je vous en remercie. Votre méthode marche au poil et c'est à mon plus grand bonheur. Malgré le fait que je n'ai pas fait grand chose, je pense avoir profité de vos connaissances. Sur ce je vous souhaite une bonne soirée et à une prochaine fois. Amicalement votre, Tao.
"Christian ASTOR" <castorix@club-internet.fr> a écrit dans le message de
news: 49232df2$0$28668$7a628cd7@news.club-internet.fr...
Parce qu'il n'y a pas de Message Loop.
Il suffit de partir du Winzard Win32 de VC++ ou VS.NET.
Par ex, avec ajout touche F11 pour arrêter le Hook =>
Je vous remercie pour votre aide très précieuse ainsi que pour votre
patiente. Grâce à vous, je crois avoir saisi les contours des hooks de
windows et je vous en remercie. Votre méthode marche au poil et c'est à mon
plus grand bonheur. Malgré le fait que je n'ai pas fait grand chose, je
pense avoir profité de vos connaissances. Sur ce je vous souhaite une bonne
soirée et à une prochaine fois.
Amicalement votre, Tao.
Je vous remercie pour votre aide très précieuse ainsi que pour votre patiente. Grâce à vous, je crois avoir saisi les contours des hooks de windows et je vous en remercie. Votre méthode marche au poil et c'est à mon plus grand bonheur. Malgré le fait que je n'ai pas fait grand chose, je pense avoir profité de vos connaissances. Sur ce je vous souhaite une bonne soirée et à une prochaine fois. Amicalement votre, Tao.
Tao
Rebonsoir à tous, j'ai voulu reprendre le code pour l'insérer dans une fenêtre (avec Qt). Le soucis est que je me retrouve avec une message d'erreur que je n'arrive pas à résoudre. Voici la partie du code consernée :
int APIENTRY FenPrincipale::abc(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) {
Et voici le message d'erreur, qui concerne la 4e ligne du code posté :
argument of type `LRESULT (FenPrincipale::)(int, WPARAM, LPARAM)' does not match `LRESULT(*)(int, WPARAM, LPARAM)'Pourriez-vous m'aider ?
Rebonsoir à tous, j'ai voulu reprendre le code pour l'insérer dans une
fenêtre (avec Qt). Le soucis est que je me retrouve avec une message
d'erreur que je n'arrive pas à résoudre. Voici la partie du code consernée :
int APIENTRY FenPrincipale::abc(HINSTANCE hInstance, HINSTANCE
hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
Rebonsoir à tous, j'ai voulu reprendre le code pour l'insérer dans une fenêtre (avec Qt). Le soucis est que je me retrouve avec une message d'erreur que je n'arrive pas à résoudre. Voici la partie du code consernée :
int APIENTRY FenPrincipale::abc(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) {