Accueil > Forum > > > > Hook et focus
Hook et focus
dimanche 3 juin 2007 à 23:41:36 |
Hook et focus

krokro6
|
Salut à tous, j'ai un gros problème depuis que j'ai commencé à utiliser les hooks, le problème est le suivant : pourquoi quand j'apelle ma fonction qui met en place le hook (InitHook) à partir d'un loader le hook ne se place que sur le programme avec lequel j'ai lancé la fonction InitHook ? exemple : http://rafb.net/p/QjV8FS98.html ce code source de hook enregistre les coordonnées de la souris à chaque appui sur le bouton droit de la souris. Une fois ce code compilé j'obtiens ma jolie dll qui marche à merveille mais le problème, c'est qu'elle ne marche que lorsque je fais un click droit sur le programme avec lequel j'ai appellée la fonction InitHook :'(. Personne ne peut m'aider à régler ce problèmpe je vous en supplie :>. Merci à tout ce qui m'aideront.
|
|
lundi 4 juin 2007 à 00:16:36 |
Re : Hook et focus

BruNews
|
Un handle de fichier est attribué au processus l'ayant demandé, totalement invalide dans un autre processus.
ciao... BruNews, MVP VC++
|
|
lundi 4 juin 2007 à 12:36:19 |
Re : Hook et focus

krokro6
|
Ah ok, merci, mais je peux faire quoi alors pour que cela marche sur les autre processus stp ?
|
|
lundi 4 juin 2007 à 13:13:16 |
Re : Hook et focus
|
lundi 4 juin 2007 à 15:34:23 |
Re : Hook et focus

BruNews
|
Inutile le test d'écriture, ne peut pas passer.
Dans la mouseProc: char buf[100]; DWORD d; hfl = CreateFile(...); // avec OPEN_ALWAYS if(hfl == INVALID_HANDLE_VALUE) return; SetFilePointer(hfl, 0, 0, FILE_END); // mettre coordonnées à tamponner dans buf (complet avec CRLF en finale) WriteFile(hfl, buf, strlen(buf), &d, 0); CloseHandle(hfl);
Ainsi tu vires les stream qui n'ont rien à faire dans du code API. Une DLL de hook doit être la plus légère possible.
ciao... BruNews, MVP VC++
|
|
lundi 4 juin 2007 à 16:36:42 |
Re : Hook et focus

rt15
|
Heu... Pourquoi le test ne passerait-il pas ? La première fois, ok, il ne passe pas, mais pourquoi ne passerait-il pas la deuxième ? Si après échec d'écriture, on ouvre le fichier avec FILE_SHARE_WRITE et que l'on met son handle dans une variable globale ou statique, pourquoi le handle perdrait sa validité ( Ces variables son unique pour chaque processus utilisant la dll.) ? Je dis ça juste pour éviter le CreateFile à chaque message logué, qui est certainement pas anodain en matière de temps CPU (Vérification des droits...). Et comme on est dans un hook, autant que ça tourne vite. [ Lien ]
|
|
lundi 4 juin 2007 à 18:17:23 |
Re : Hook et focus

krokro6
|
if(wParam == WM_RBUTTONDOWN) { GetCursorPos(&Mouse); char CoordCX[5]; char CoordCY[4]; sprintf(CoordCX, "%ld", Mouse.x); sprintf(CoordCY, "%ld", Mouse.y); DWORD d; HANDLE hfl = CreateFile("C:\\FichierLog.txt", GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if(hfl == INVALID_HANDLE_VALUE) MessageBox(NULL, "Impossible de creer un fichier MAP", "Erreur", MB_ICONERROR); SetFilePointer(hfl, 0, 0, FILE_END); WriteFile(hfl, CoordCX, strlen(CoordCX), &d, 0); WriteFile(hfl, CoordCY, strlen(CoordCY), &d, 0); CloseHandle(hfl); } Ce code ne marche pas :(.
|
|
lundi 4 juin 2007 à 18:44:26 |
Re : Hook et focus

krokro6
|
Bon en fait tout marche bien mais le problème c'est que j'obtiens des petits carrés à la place des coordonnées...
if(wParam == WM_RBUTTONDOWN) { GetCursorPos(&Mouse);
char CoordCX[5]; char CoordCY[4];
sprintf(CoordCX, "%ld", Mouse.x); sprintf(CoordCY, "%ld", Mouse.y);
DWORD d; HANDLE hfl = CreateFile("FichierLog.txt", GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if(hfl == INVALID_HANDLE_VALUE) MessageBox(NULL, "Impossible de creer un fichier MAP", "Erreur", MB_ICONERROR); SetFilePointer(hfl, 0, 0, FILE_END); WriteFile(hfl, CoordCX, strlen(CoordCX), &d, 0);
WriteFile(hfl, CoordCX, 5, &d, 0); CloseHandle(hfl); WriteFile(hfl, CoordCY, 4, &d, 0); CloseHandle(hfl); }
Voila merci de votre aide.
|
|
lundi 4 juin 2007 à 18:48:43 |
Re : Hook et focus

krokro6
|
Arf j'ai mal copié le code, tout ce que vous voyez en double bha n'y faites pas attention.
|
|
lundi 4 juin 2007 à 18:53:32 |
Re : Hook et focus

BruNews
|
1 seul WriteFile, dur dur... char buf[28], *c; c = bnitoa(Mouse.x, buf); *c++ = ' '; // SEPARATEUR c = bnitoa(Mouse.y, c); WriteFile(hfl, buf, c - buf, &d, 0); CloseHandle(hfl); // FINI Tu trouveras bnitoa() ici: http://www.cppfrance.com/code.aspx?ID=36937ciao... BruNews, MVP VC++
|
|
Cette discussion est classée dans : problème, fonction, focus, hook, inithook
Répondre à ce message
Sujets en rapport avec ce message
Instance [ par victorcoasne ]
Bonjour,J'ai un programme avec une dll. Sous dev-c++ en compilant la dll comme du C++ la fonction DllMain n'est pas appellée. Je l'appelle donc avec
problème avec la fonction InternetConnect [ par progrima ]
Salut tout le monde!!! est ce que quelqu'un pourrait m'aider à trouver l'erreur???? l'ouverture de la connexion avec la fonction InternetOpen est bon
Question sur les dll [ par flatou ]
Salut a tous Je me pose une question : soit un programme qui a effectuer un hook sur une fonction de la dll kernel32.dll. Si mon deuxieme programme co
problème avec la fonction pow... [ par othland ]
sltau fait, j'arrive pas à interpreter le résultat de la fonction pow:int pk;float num;double pui;pui=pow(num,pk); quand je met pk=23 et num= 15 par e
Variable pour un hook [ par ChrOnOs83 ]
Bonjour à tous, Il y a un problème sur lequel je bloque depuis déjà plusieurs jours.J'ai créé une dll pour faire un hook clavier. Quand j'appelle la f
ShellExecute() [ par ncoder ]
Bonjour à tous,J'ai un problème où je n'y comprends rien du tout :J'ai fait un hook global, pour savoir qd un certain type de fenètre s'ouvre.Jusque l
Problème avec la fonction OnTimer() sous vc++ [ par Djule01 ]
Bonjour, Je réalise actuellemnent un casse-briques sous visual c++ 6.0 et j'ai un problème concernant la fonction OnTimer(). J'en suis au stade ou j
Problème suppression fichier [ par GIGN90 ]
Bonjour à tous, je suis entrain de développer une application et j'utilise gtkmm pour l'interface graphique.Le souci c'est qu'à un moment je dois supp
problème d'une fonction sur vs.net c++ [ par stgi02 ]
salut, j 'aimerai avoir des explications sur : char t; // je comprends t = (e->get_KeyChar()); // je comprends this->essai->Write((LPCVOID *)&t,sizeof
Problème avec la fonction system() [ par bouba ]
Bonjour, dans un programme de dois lancer d'autres exécutables. J'ai utilisé la fonction system() pour réaliser l'exécution des ces progs. Ca marche m
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
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
|