Accueil > Forum > > > > Hooks
Hooks
lundi 7 août 2006 à 00:24:57 |
Hooks

M5i9k
|
Bonsoir, je voulais savoir si il était possible de creer un hook lors du chargement d'un dll c'est à dire dans la fonction DllMain d'un dll, j'essaye de le faire mais n'y arrive pas : #include "windows.h" HHOOK hKeyb; HINSTANCE hDll; LRESULT CALLBACK KeybProc(int nCode, WPARAM wParam, LPARAM lParam) { if (nCode < 0) // do not process message return CallNextHookEx(hKeyb, nCode, wParam, lParam); MessageBox(NULL, "Appui", "Message", MB_OK); return CallNextHookEx(hKeyb, nCode, wParam, lParam); } void Hook() { hKeyb = SetWindowsHookEx(WH_KEYBOARD, KeybProc, hDll, 0); if(!hKeyb) MessageBox(NULL, "Erreur", "Erreur", MB_OK); } void UnHook() { if(hKeyb) UnhookWindowsHookEx(hKeyb); } BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) { hDll = hinstDLL; if(fdwReason == DLL_PROCESS_ATTACH) { Hook(); } if(fdwReason == DLL_PROCESS_DETACH) { UnHook(); } return TRUE; }
|
|
lundi 7 août 2006 à 09:45:49 |
Re : Hooks

nightlord666
|
Il ne faut jamais utiliser de fonctions bloquantes comme MessageBox dans un hook, car sinon le système d'exploitation ne va pas effectuer le hook. Essaie plutôt un fopen/fwrite à la place, et donne nous le résultat.
Sachant qu'on peut toujours enlever une ligne à un programme, et que dans un programme il y a toujours un bug, un programme peut se résumer à une ligne avec un bug.
|
|
lundi 7 août 2006 à 12:27:28 |
Re : Hooks

M5i9k
|
Voila, j'ai réecris ma fonction :
LRESULT CALLBACK KeybProc(int nCode, WPARAM wParam, LPARAM lParam) { if (nCode < 0) // do not process message return CallNextHookEx(hKeyb, nCode, wParam, lParam);
// Sauvegarde dans le fichier ofstream fichier; fichier.open("c:\\log.txt", ios::out); fichier << "touche appuyée" << endl; fichier.close();
return CallNextHookEx(hKeyb, nCode, wParam, lParam); }
Resultat : rien du tout... En fait je voudrais creer seulement le hook sur le processus qui charge la dll plutot qu'un hook global si possible.
|
|
lundi 7 août 2006 à 13:32:42 |
Re : Hooks

elguevel
|
Salut,
Désolé je ne fait pas de C (enfin pas pour les DLL) mais en Delphi le DLLMain ne se déclenche pas de lui meme, il faut le lancer via un autre point d'entré qui indiquera au passage l'etat de la DLL :
Voila un morceau de code que j'utilise dans une de mes appli (Dll) Delphi :
------
procedure Main( Reason : Integer ) ; <= Ton DllMain Ici begin
case reason of <= ici fait un switch c'est plus prope !
DLL_PROCESS_DETACH: // DLL Se ferme begin // Traiter evenement à la fermeture end;
DLL_PROCESS_ATTACH: // DLL Se lance begin // Traiter evenement au lancement end;
end;
end;
begin <= là on est dans le programme principal, . et c'est ce qui nous sert d'entry point DllProc := @Main; DllProc(DLL_PROCESS_ATTACH); <= appel du DLLMain ! end.
------
Enfin voila pour te donner une idée, cherche l'équivalent en C/C++.
A+
|
|
lundi 7 août 2006 à 14:31:23 |
Re : Hooks

nightlord666
|
Non son code C est correct pour le DllMain.
Sachant qu'on peut toujours enlever une ligne à un programme, et que dans un programme il y a toujours un bug, un programme peut se résumer à une ligne avec un bug.
|
|
lundi 7 août 2006 à 15:11:33 |
Re : Hooks

elguevel
|
Bon ba désolé je vois pas alors... mais fait quand meme un switch dans ton DLLMain :-)
|
|
lundi 7 août 2006 à 15:16:03 |
Re : Hooks

M5i9k
|
C'est fait : BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) { switch(fdwReason){ case DLL_PROCESS_ATTACH:hDll = hinstDLL; Hook(); break;case DLL_PROCESS_DETACH:UnHook(); break;}
return TRUE;
}
Le hook s'installe bien mais on dirais que la fonction ne s'execute jamais :s
|
|
lundi 7 août 2006 à 15:22:53 |
Re : Hooks

nightlord666
|
Pour elguevel : En C++, lors du chargement d'une DLL, Windows va aller automatiquement exécuter la fonction DllMain, avec la raison donnée dans le deuxième paramètre (fdwReason).
Sachant qu'on peut toujours enlever une ligne à un programme, et que dans un programme il y a toujours un bug, un programme peut se résumer à une ligne avec un bug.
|
|
jeudi 10 août 2006 à 11:12:16 |
Re : Hooks

elguevel
|
Merci pour cette precision ... ;-)
|
|
jeudi 10 août 2006 à 13:03:59 |
Re : Hooks

nightlord666
|
Essaie d'enlever le Unhook de ton DllMain, je pense que ton problème doit venir de là.
Sachant qu'on peut toujours enlever une ligne à un programme, et que dans un programme il y a toujours un bug, un programme peut se résumer à une ligne avec un bug.
|
|
Cette discussion est classée dans : dll, wparam, lparam, ncode, hkeyb
Répondre à ce message
Sujets en rapport avec ce message
Annuler Action Menu en Hookant [ par Zootella ]
Hello, j'ai cette procédure hook: LRESULT CALLBACK HookMenuMessage(int nCode, WPARAM wParam, LPARAM lParam) { if(nCode == HC_ACTION) {
vs2005 kbdhook [ par Sebopop2 ]
bonjour,j'ai cree une app avec une dll pour faire un hook global clavier, malheureusement celui ci ne fonctionne pas.#include"toolbox.h"</f
Hook + GetForegroundWindow + SendMessage [ par erodatam ]
Bonjour, Je souhaite faire un gestionnaire de presse papier en application win32. Grace à un hook, je suis capable d'intercepter les pressions sur le
Problème de reconnaissance d'un type [ par max12 ]
#include "main.h"#define _WIN32_WINNT 0x0400#include // Fonction de gestion du hook <font color="#0000
Je trouve pas le bon code [ par vah bi ]
Bonjour à tous , voilà je débute en c et comme editeur j'ai le visual c++.Je fais actuellement une application avec l'api de visual c++ mais en lang
Comment faire pour re_afficher un dialogue apres "RedrawWindow" API sous DEV cpp [ par LouisJean ]
louisjean dev cpp Bonjours a tous!Comment faire pour remontrer le dialogue "Mon_DIALOG" en API wind32 sous DEV
souci bouton C++ [ par Tom56340 ]
bonjours voila j'ai un couci l'or de mon compile run j'ai mi un bouton donnée un non ect.. donner une valuer a ID_BOUTON "1"; mais cela ne marche
MouseHook avec DialogBox [ par mouloudh ]
Bonjour la communauté, Je désespère. Voilà plus d'un mois que je cherchais une solution pour un programme (une souris visuelle qui doit rester toujour
callback [ par krondor5 ]
Bonjour, Je retrouve parfois dans certains codes sources, le mot (apparemment réservé) CALLBACK, comme dans l'exemple ci-après, tiré d'une source don
Problème de message windows [ par Jbs106 ]
Bonjour Bonjour, comme je l'ai précisé dans le titre, je souhaite réaliser une application de dessin, un SKETCHER avec les MFCs, je l'ai réalisé grac
Livres en rapport
|
Derniers Blogs
[TECHDAYS2012] OUI J'Y SERAI![TECHDAYS2012] OUI J'Y SERAI! par JeremyJeanson
Bonsoir, Certes, je l'annonce avec un peu de retard, mais je serai effectivement au Techdays demain. Comme l'an dernier, je participerai au programme ATE (Ask The Expert). Si vous avez des questions Workflow, WCF, AppFabric ou plus généralement .net, n'hé...
Cliquez pour lire la suite de l'article par JeremyJeanson TFS INTEGRATION TOOLS - SUIVI DES SYNCHRONISATIONS AVEC REPORTING SERVICESTFS INTEGRATION TOOLS - SUIVI DES SYNCHRONISATIONS AVEC REPORTING SERVICES par vfabing
Afin de s'assurer du bon fonctionnement des différentes synchronisations effectuées par les TFS Integration Tools, 2 rapports sont présents dès l'installation. Il suffit alors d'effectuer les manipulations suivantes pour pouvoir les visualiser : Loca...
Cliquez pour lire la suite de l'article par vfabing CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT)CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT) par FREMYCOMPANY
Bonjour à tous, Je viens de publier une proposition comprenant 5 pseudo-classes pour le CSS Working Group ayant trait à l'état de chargement d'un élément (ex: IMG,VIDEO,AUDIO,OBJECT pour l'HTML.). Si le c½ur vous en dit, vous pouvez retrouver cette p...
Cliquez pour lire la suite de l'article par FREMYCOMPANY MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ?MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ? par ROMELARD Fabrice
Formation initiale Durant la formation, le découpage classique est le suivant (je donnerai les équivalences Suisse lorsque je les connaîtrais) : Ecole primaire jusqu'au Collège : Formation générale permettant d'obtenir les méthodes...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice Y'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENTY'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENT par Aleks
Quand on a ce genre d'erreur sans log :
Et bas on a juste envie de choper le gas de Microsoft qu'a développé ça et lui foutre des baffes de Coboye ! ...
Cliquez pour lire la suite de l'article par Aleks
Forum
RE : ARBRE BINAIRERE : ARBRE BINAIRE par pacotheking
Cliquez pour lire la suite par pacotheking
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|