begin process at 2012 05 29 09:04:26
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

HOOK - Help [DevCPP]


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

HOOK - Help [DevCPP]

mardi 7 octobre 2003 à 00:16:44 | HOOK - Help [DevCPP]

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 clavier et reagit au moment d'une action sur la fleche du bas.
A la compilation (DEVC++) il n'y a aucune erreur.
Voici le code (seulement les parties avec le HOOK):

#include <windows.h>
#include "psapi.h" // Pour les process mettre la librairie -lpsapi
#include <stdio.h>
#include <ctype.h> // Pour tolower
#include <stdlib.h>
#include <time.h>
HHOOK hhk = 0;

[...]

////////////////////////////////////////////////////////////////////////////////
/* Declare Windows procedure */
LRESULT CALLBACK WindowProcedure(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK GetKey(HWND, WPARAM, LPARAM);

[...]

LRESULT CALLBACK GetKey(int nCode, WPARAM wParam, LPARAM lParam)
{
MSG *lpmsg;
lpmsg = (MSG*) lParam;
if(nCode < 0) goto defRet;
if(lpmsg->message == WM_KEYDOWN && lpmsg->wParam == VK_DOWN)
{
MessageBox (NULL, "ok" , "ok", 0);
return 1;
}
defRet:;
return (CallNextHookEx(hhk, nCode, wParam, lParam));
}


LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_CREATE:
hhk = SetWindowsHookEx(WH_KEYBOARD, GetKey, 0, GetCurrentThreadId());
break;

[...]

case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, message, wParam, lParam);
Fin:;
if(hhk) UnhookWindowsHookEx(hhk);
exit(0);
}

return 0;
}

Voila si vous pouvez m'aider.

GuitouLeFoux
"Le secret du sage est de briller dans l'ombre"
mardi 7 octobre 2003 à 07:37:20 | Re : HOOK - Help [DevCPP]

BruNews

Administrateur CodeS-SourceS
defRet:; ??? que fait ce ';' derriere le label defRet ?
BruNews, ciao...
mardi 7 octobre 2003 à 09:23:21 | Re : HOOK - Help [DevCPP]

guitoulefoux

D'apres ce que j'ai compris (car ce code n'est pas de moi) defRet s'actionne si nCode < 0 donc si il y a une erreur ou si il y a une action non conforme.(enfin je pense)

GuitouLeFoux
"Le secret du sage est de briller dans l'ombre"
mardi 7 octobre 2003 à 09:34:23 | Re : HOOK - Help [DevCPP]

BruNews

Administrateur CodeS-SourceS
oui mai ENLEVE ce ';' derriere le label defRet.
BruNews, ciao...
mardi 7 octobre 2003 à 09:47:19 | Re : HOOK - Help [DevCPP]

guitoulefoux

Merci pour cette précision .... effectivement ca marche aussi.
Mais ca ne résoud pas mon probléme.....
Je pense que je dois mal gérer la mémoire (fuite au autre ....)
j'ai regardé sur ce site et sur msdn mais je n'arrive pas a trouver ou est l'erreur.
Ce qui est bizzart c que l'erreur survient AU MOMENT ou j'appuis sur la touche donc ici :

if(lpmsg->message == WM_KEYDOWN && lpmsg->wParam == VK_DOWN)

L'erreur est la suivante:
"L'instruction à 0x00401dab emploie l'adresse mémoire 0x01500005. La mémoire ne peut pas etre read.

GuitouLeFoux
"Le secret du sage est de briller dans l'ombre"
mardi 7 octobre 2003 à 09:53:53 | Re : HOOK - Help [DevCPP]

BruNews

Administrateur CodeS-SourceS
Bon maintenant passons aux GRRRRRROSSES erreurs:
Va voir le hook WH_KEYBOARD dans msdn, tu devrais comprendre d'ou vient l'exception memoire. Faut jamais faire un copier coller avec du code et penser que ira bon.
Chaque type de hook reçoit des parametres differents, tu vois que je te mets deja sur la piste.
BruNews, ciao...
mardi 7 octobre 2003 à 10:03:37 | Re : HOOK - Help [DevCPP]

guitoulefoux

Merci de ta patience et de ton aide.
Je vais regarder.
Merci ;) (si je suis trop a la rue je te referais un petit coucou)

GuitouLeFoux
"Le secret du sage est de briller dans l'ombre"
mardi 7 octobre 2003 à 13:26:57 | Re : HOOK - Help [DevCPP]

guitoulefoux

Salut j'ai fait des recherches:

1/Il faudrait que je declare Winuser.h en plus de Windows.h

2/ Voila la syntax de mon hook mais je ne sais pas quoi mettre pour hMod et dwThreadId.

HHOOK SetWindowsHookEx( int idHook,
HOOKPROC lpfn,
HINSTANCE hMod,
DWORD dwThreadId
);

peut etre:
hhk = (HHOOK)SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)GetKey, ghDLLInst, 0);

La je suis désolé mais j'avance pas beaucoup peux tu me donner des petits indices ou me dire si je pars bien sur le bon chemin.

Merci

GuitouLeFoux
"Le secret du sage est de briller dans l'ombre"
mardi 7 octobre 2003 à 13:37:42 | Re : HOOK - Help [DevCPP]

BruNews

Administrateur CodeS-SourceS
Normalement Winuser.h est inclus directement par Windows.h donc inutile de le mettrek, a moins que DEVCPP...
SetWindowsHookEx, ben suffit de regarder dans mes sources et tu auras ce qu'il te faut. Prends celle avec le hook sur dialogbox, tu auras la syntaxe d'appel.
BruNews, ciao...
mardi 7 octobre 2003 à 13:53:26 | Re : HOOK - Help [DevCPP]

guitoulefoux

Merci je vais tester ce soir (la mon boss commence a douter de ma productivité)

Encore une petite question?
Pourquois utilise tu WH_MSGFILTER au lieu de WH_KEYBOARD

Encore merci pour ton aide precieuse.

GuitouLeFoux
"Le secret du sage est de briller dans l'ombre"

1 2

Cette discussion est classée dans : include, wparam, hook, lparam, hhk


Répondre à ce message

Sujets en rapport avec ce message

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 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 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 ( [Dev C++] disparition hook [ par erehtnaP ] Salut, je commence en C++, et je voudrais creer un hook global avec Dev-C++ Le code de la dll et de l'exe se compile sans erreur, les fonction de mis probleme dans mon hook clavier [ par youpiyoyo ] je me suis po embeter j'ai pris le code de brunews a ce sujetj'aimerai faire un hook kan on appuie a la fois sur la touche windows et un ctrl...j'ai c spy++ et hook [ par bamoo ] Bonjour, j'ai un petit problème avec un hook qui en marche pas. J'aimerais intercepter les messages envoyés à une application. j'ai utilisé spy++ pour Combo des touches dans un Hook [ par bdkiller ] Salut,encore moi avec les Hooks xDJ'arrive à mettre les hook en place, ca marche, sauf que je sais pas comment faire pour intercepter la combinaison d 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 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 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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,437 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales