|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Combo des touches dans un Hook [ Archives / Au secours ] (bdkiller)
Informations & options pour cette discussion
|
lundi 6 décembre 2004 à 21:35:40 |
Combo des touches dans un Hook

bdkiller
|
Salut, encore moi avec les Hooks xD J'arrive à mettre les hook en place, ca marche, sauf que je sais pas comment faire pour intercepter la combinaison de de touches (Ctrl + 1 par exemple). J'ai ceci comme code: LRESULT __stdcall HookClavier(int nCode, WPARAM wParam, LPARAM lParam) { if(nCode >= 0) { HWND hwamp; hwamp = FindWindow("Notepad", 0);
if(wParam == VK_F8 && (lParam & 0x80000000) { PostMessage(hwamp, WM_KEYDOWN, VK_F5, 0); } } return CallNextHookEx(hHook, nCode, wParam, lParam); }
|
Comment puis-je rajouter une deuxieme touche?
|
|
|
|
mardi 7 décembre 2004 à 00:14:27 |
Re : Combo des touches dans un Hook

racpp
|
Salut, Pour tester l'état de la touche Ctrl tu utilises la fonction GetKeyState() comme ceci: | int etat=GetKeyState(VK_CONTROL); |
Cette fonction retourne 0 si aucune des deux touches Ctrl n'est enfoncée. Ainsi, dans ton code tu peux faire: | if(wParam == VK_F8 && GetKeyState(VK_CONTROL) && ..... |
|
|
|
|
mardi 7 décembre 2004 à 00:47:18 |
Re : Combo des touches dans un Hook

racpp
|
J'ai oublié de péciser que dans certains cas la fonction GetKeyState() peut retourner une valeur erronée. Pour éviter cela il faut faire: ... && (GetKeyState(VK_CONTROL) & 0x8000) .... comme ça on est sûr que la touche Ctrl est réellement enfoncée. A noter que cette fonction retourne normalement un SHORT mais fonctionne aussi avec un int.
|
|
|
|
mardi 7 décembre 2004 à 07:08:13 |
Re : Combo des touches dans un Hook

bdkiller
|
Salut, merci mais c'est déjà testé, ca marche pas.. je viens de faire ca ainsi: if(nCode >= 0) { HWND hwamp; hwamp = FindWindow("Notepad", 0); //si je mets BOOL etat = ... ca revient en meme int etat=GetKeyState(VK_CONTROL);
if(wParam == VK_F8 && (etat & 0x8000) && (lParam & 0x80000000)) { PostMessage(hwamp, WM_KEYDOWN, VK_F5, 0); } } return CallNextHookEx(hHook, nCode, wParam, lParam); }
|
Ce qui est bizarre dans ce cas, c'est qu'il réagi quand j'appuis Alt Gr + F8 ! et il poste deux fois F5 dans notepad !! J'ai testé de faire: | if(wParam == VK_F8 && (GetKeyState(VK_CONTROL) & 0x8000)) |
ca revient en même, marche pas. Note: je suis sous win2k pro, ca peut jouer le role peut-etre? Merci encore
|
|
|
|
mardi 7 décembre 2004 à 10:00:11 |
Re : Combo des touches dans un Hook

BruNews
|
Une maniere de tester: if((GetKeyState(VK_CONTROL) >= 0xFFFFFF80) && (wParam == VK_F8))
ciao... BruNews, MVP VC++
|
|
|
|
mardi 7 décembre 2004 à 13:57:17 |
Re : Combo des touches dans un Hook

racpp
|
Salut, Voici une petite procédure de hook que je viens de tester avec mon code source : HOOK_GLOBAL_SANS_DLL __declspec(dllexport) LRESULT CALLBACK HookProc ( int nCode, WPARAM wParam, LPARAM lParam) { if (nCode == HC_ACTION) { if (wParam==WM_KEYDOWN) { KBDLLHOOKSTRUCT hookstruct = *((KBDLLHOOKSTRUCT*)lParam); if (hookstruct.vkCode==VK_F8 && (GetKeyState(VK_CONTROL) & 0x8000)) { MessageBox(0,"CTRL+F8","",0); } } } return CallNextHookEx(hHook, nCode, wParam, lParam); }
|
Ca marche justement sur Win2k pro.
|
|
|
|
mardi 7 décembre 2004 à 21:06:37 |
Re : Combo des touches dans un Hook

bdkiller
|
racpp je sais pas le mettre en place dans Borland c++ (dans quel evenement OnFormCreate ou ou encore...)
Bru, ca passe pas chez moi! :'(
|
|
|
|
mardi 7 décembre 2004 à 21:16:03 |
Re : Combo des touches dans un Hook

BruNews
|
Mais votre Borland, il ne permet pas d'ecrire du vrai code API au lieu de ne faire que de l'interprete avec des OnFormCreate et autres bidules mystiques ? C'est tout de meme + simple quand on est maitre de son code.
ciao... BruNews, MVP VC++
|
|
|
|
mardi 7 décembre 2004 à 22:42:25 |
Re : Combo des touches dans un Hook

bdkiller
|
Aucunde idée Bru. Ton code a l'air bon mais passe pas. Si je mets juste : | if(wParam == VK_F8 && (lParam & 0x8000000)) |
la il fait correctement l'envoi de F5 sur notepad, si j'enleves 0x80000000 ca envoit 2 fois de suite F5... et je sais pas pour quelle raison il marche pas avec ton code.
|
|
|
Cette discussion est classé dans : code, touches, wparam, hook, lparam
Répondre à ce message
Sujets en rapport avec ce message
Hook messages de windows [ par deck_bsd ]
Bonjour a tous,Voila je suis sur le point de finir mon 1er hook, mais voila , il ne fonctionne que une fois. Il intercepte une fois le message voulu (
Hook clavier sous windows [ par gamani5 ]
sltje sais il y a deja beaucoup de tuto sur le sujet mais j en ai lu plein mais j ai toujours un probleme, j arrive a detecter l utilisation d une tou
Hook clavier et fenêtre premier plan [ par krokro6 ]
Salut à tous, j'ai un petit problème avec ce code la : #include #include #include #include using namespace std;#define DLLEXPORT __declsp
Hook des touches F5 d'une autre appli [ par Kheo ]
Bonjour, Est ce que quelqu'un pourrait me donner quelques infos sur la méthode à employer pour capter des touches dans une autre appli.En fait je veux
HOOK - Help [DevCPP] [ par guitoulefoux ]
Bonjour,J'essaye de faire un hook (mon 1er) mais a chaque fois qu'il se lance j'ai un pb d'affectation mémoire.en fait le HOOK récupère les actions cl
[HOOK]Encore le meme probleme.. [ par bdkiller ]
Salut,Bon, après pas mal d'heures passés là-dessus, j'ai la DLL qui se compile sans erreurs, l'appli principale qui se compile sans erreurs également!
pb pour hooké la touche entrer et espace [ par BsEtZeOpLhD ]
Salut.Voila mon problème : j'essaye d'empecher l'utilisation des touches entrer et espace dans toutes les fenêtre windows.J'ai essayer de faire un hoo
Code ASCII [ par SuperDoudou ]
SuperDoudouJe n'arrive pas trouver les touches dont les codes ascii sont 224 et 13.De +, est-ce que je me trompe si je pense que les codes ascii des
[C] Interdire l'accès à certaines touches [ par Cow_B ]
SalutBon, cette fois ci mon souci est le suivant : je demande à un utilisateur de rentrer un chiffre kelkil soit. Le problème c'est que si la personne
WIN32 [ par xarier ]
LRESULT CALLBACK MainProc(HWND Dlg,UINT message,WPARAM wParam,LPARAM lParam)Please C dans certain prog je vois cux qui utilise le lparam et d'autre q
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|