PtitKiki Le Vrai | Bonjour, Après pas mal de recherches, j'ai découvert qu'il était possible de se passer d'une DLL pour executer du code lors du catching d'un evenement par un hook (l'utilisation de la dll etant le cas le plus général). Cependant je ne souhaite pas en utiliser une. J'ai donc trouver un bout de code sur la msdn qui intègre tout dans un seul exe. Le probleme est le suivant :
L'exécution de la callback attachée au hook ne se produit que lorsque j'ai la messagebox activé (cf le code). Or je veux que le programme n'aie aucune IHM (tourne en tache de fond).
J'envisage de mettre ensuite une boucle de traitement.
Ma question est : comment remédier à ce problème ? Est-on obligé de créer une fenetre pour pouvoir trapper les messages windows ? (je pense que non) La solution de facilité serait bien sur de mettre une fenetre invisible et de la masquer de la barre des taches mais ca n'est pas "propre".
ps : non je ne developpe pas un keylogger ! voici le code en question, d'avance merci pour vos réponses (j'espere être compris)
Code :
- /******************************************************************************
- Module: DisableLowLevelKeys.cpp
- Notices: Written 2000 Jeffrey Richter
- ******************************************************************************/
- #define _WIN32_WINNT 0x0400
- #include <Windows.h>
- ///////////////////////////////////////////////////////////////////////////////
- LRESULT CALLBACK LowLevelKeyboardProc(int nCode,
- WPARAM wParam, LPARAM lParam) {
- BOOL fEatKeystroke = FALSE;
- PKBDLLHOOKSTRUCT p=NULL;
- if (nCode == HC_ACTION) {
- switch (wParam) {
- case WM_KEYDOWN: case WM_SYSKEYDOWN:
-
- MessageBox(NULL,"Touche detectee","",MB_OK);
- // traitement
- break;
- default :
- break;
- }
- }
- return(fEatKeystroke ? 1 : CallNextHookEx(NULL, nCode, wParam, lParam));
- }
- ///////////////////////////////////////////////////////////////////////////////
- int WINAPI WinMain(HINSTANCE hinstExe, HINSTANCE, PTSTR pszCmdLine, int) {
- // Install the low-level keyboard & mouse hooks
- HHOOK hhkLowLevelKybd = SetWindowsHookEx(WH_KEYBOARD_LL,LowLevelKeyboardProc, hinstExe, 0);
- // Keep this app running until we're told to stop
- MessageBox(NULL,"Fenetre bloquante",NL, MB_OK);
-
- bool loop = true;
- while(loop)
- {
- // traitement
- _sleep(100);
- }
- UnhookWindowsHookEx(hhkLowLevelKybd);
- return(0);
- }
- ///////////////////////////////// End Of File /////////////////////////////////
|
Message édité par PtitKiki le 10-02-2005 à 21:43:48
|