Accueil > Forum > > > > [HOOK]Encore le meme probleme..
[HOOK]Encore le meme probleme..
dimanche 9 novembre 2003 à 00:25:35 |
[HOOK]Encore le meme probleme..

bdkiller
|
Salut, Bon, après pas mal d'heures passés là-dessus, j'ai la DLL qui se compile sans erreurs, l'appli principale qui se compile sans erreurs également !! Super, génial!! Pas d'erreurs = signe de progression 8) Mais bon, j'ai toujours un problème.. ca ne marche pas!! Je file voir le code, ca ce trouve j'ai encore fait des conneries: [color=blue]Code de la DLL:[/color] #include <stdio.h> #include <vcl.h> #include <windows.h> #include "wkh.h" #pragma hdrstop
// VARIABLES GLOBALES
static HHOOK gos_kbdHK; static HINSTANCE hDLL;
// FONCTIONS USUELLES ( DECLARATION ) void Logkbd(int code, WPARAM *wParam,LPARAM lParam);
// FONCTIONS USUELLES ( DEFINITION ) void Logkbd(int code, WPARAM *wParam,LPARAM lParam) { //Definitions des commandes de WinAMP #define WINAMP_PREV 40044 #define WINAMP_PLAY 40045 #define WINAMP_PAUSE 40046 #define WINAMP_STOP 40047 #define WINAMP_NEXT 40048 #define WINAMP_VOLUME_UP 40058 #define WINAMP_VOLUME_DOWN 40059
//on trouve WinAMP //"v1.x" on peux mettre "v2.x", mais //c'est la question de compatibilité HWND winamp = FindWindow("Winamp v1.x", 0);
LPMSG pMsg=(LPMSG)lParam; if (pMsg->message == WM_KEYDOWN) { if ((pMsg->wParam == VK_F8)) { SendMessage(winamp,WM_COMMAND,WINAMP_PLAY,0); } } }
// DEFINITION DES FONCTION DE FILTRE
LRESULT CALLBACK kbdHookProc(int code, WPARAM wParam, LPARAM lParam) { if(! ( (DWORD)lParam & 0x40000000)) return CallNextHookEx(gos_kbdHK,code,wParam,lParam); Logkbd(code,&wParam,lParam);
return CallNextHookEx(gos_kbdHK,code,wParam,lParam); } _declspec(dllexport) bool SetkbdHook() { gos_kbdHK = SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)kbdHookProc,hDLL,0); return( (gos_kbdHK != 0) ? 1:0); }
_declspec(dllexport) void UnSetkbdHook() { UnhookWindowsHookEx(gos_kbdHK); }
BOOL WINAPI DllMain(HINSTANCE hInstance,DWORD dwReason,LPVOID lpVoid) { switch(dwReason) { case DLL_PROCESS_ATTACH: hDLL = hInstance; break;
case DLL_PROCESS_DETACH: UnSetkbdHook(); break;
case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: break; } return TRUE; }
|
[color=darkblue] Bon, j'ai fait les définitions et tout le bordel pour trouver la fenêtre de WinAMP, j'ai laissé la touche F8 pour faire au moins un test, voir si ca marche.. Je compile la DLL - pas de problèmes, aucun warning, ni error.. je suis content, je me dis que ca va marcher je passe au code de l'appli..[/color] [color=blue]Code de l'appli:[/color] //--------------------------------------------------------------------------- #include <vcl.h> #include <stdio.h> #include <windows.h> #include "Main.h" #include "stdafx.h"
#pragma hdrstop //--------------------------------------------------------------------------- #pragma resource "*.dfm" TMainForm *MainForm;
typedef bool (*SKH) (void); typedef void (*USKH) (void);
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { SKH skh; USKH uskh;
HMODULE hDLL;
char DLLname[256] = "wkh.dll";
char toaff[1024];
if(!(hDLL = LoadLibrary(DLLname))) { wsprintf(toaff,"Impossible de charger %s\nL'application va se términer",DLLname); MessageBox(NULL,toaff,"ERREUR FATALE",MB_OK); return 0; }
skh = (SKH) GetProcAddress(hDLL,"SetkbdHook"); if( !skh ) MessageBox(NULL,"Impossible de charger la fonction exportee SetkbdHook()","ERREUR",MB_OK); else { bool res = skh(); if( ! res ) MessageBox(NULL,"Impossible de définir les Hooks clavier....","ERREUR",MB_OK); }
MessageBox(NULL,"Appuyez sur OK pour terminer le processus","INFO",MB_OK | MB_ICONINFORMATION);
uskh = (USKH) GetProcAddress(hDLL,"UnSetkbdHook"); if (uskh) uskh(); FreeLibrary(hDLL);
return 0; } //--------------------------------------------------------------------------- __fastcall TMainForm::TMainForm(TComponent* Owner) : TForm(Owner) { } //----------------------------------------------------------------------------
|
[color=darkblue] Bon, la compilation du prog s'effectue correctement, pas de warnings, ni errors.. le prog se lance.. et je ne vois même pas de messages définis (en cas ou la DLL se chargerait pas, afficher nia nia nia erreure), là j'suis super content, je me dis: ca y est! c'est fait, wow! Je m'apprete à appuier sur la touche F8 pour tester play.. et là.. (vous imaginez moi en train de bouffer mes doigts et tirer mes cheveux) :cry: [/color] Voilà voilà.. je sais pas il est ou le problème ici??! Tout se compile pafaitement, mais rien qui marche!! wouaaaaaaa!! Sérieusement, quelqu'un peut-il résoudre ce problème?! Car je suis dessus dépuis déjà pas mal de temps, jour et nuit et je n'arrive à rien.. :roll: Je dois être un gros noOb de chez noobs.. mais bon, je vous prie de m'aider: [color=red] AU SECOURS[/color] En attendant une réponse, ZiKO.
|
|
dimanche 9 novembre 2003 à 11:47:36 |
Re : [HOOK]Encore le meme probleme..

BruNews
|
Je te corrigerais bien ton prog mais je bosse sur VS... C'est bien un hook systeme global que tu veux et non local de ton prog, on est d'accord. Alors si oui procede ainsi: Tu vires GetProcAddress etc de ton exe, tu lies la dll avec un h et un lib. Exporte une func d'initialisation du hook depuis la dll et une pour stopper, tout doit se traiter en interne. Prends aussi l'habitude d'exporter en __stdcall et extern "C". BruNews, ciao...
|
|
dimanche 9 novembre 2003 à 16:29:26 |
Re : [HOOK]Encore le meme probleme..

bdkiller
|
Merci pour ta réponse, mais.. regarde: Le header de la dll: LRESULT CALLBACK kbdHookProc(int, WPARAM, LPARAM);
extern "C" { _declspec(dllexport) bool SetkbdHook(); _declspec(dllexport) void UnSetkbdHook(); }
|
Je sais pas quel hook, vu que je m'y connais pas - je ne vois pas de difference local, global.. Il me faut juste que quand je joue, pouvoir controller winamp sans faire ALT-TAB pour sortir du jeu.. Sur le forum de developpez.com quelqu'un m'as repondu en me disant qu'il fait virrer ceci de la dll: case DLL_PROCESS_DETACH: UnSetkbdHook(); break;
|
|
|
dimanche 9 novembre 2003 à 16:40:19 |
Re : [HOOK]Encore le meme probleme..

BruNews
|
Je pense aussi que ce n'est pas sa place car sur un hook global cela serait appele pour chaque processus finissant. C'est au prog ayant cree le hook de l'enlever, et cela depuis l'exe qui doit appeler la fonction exportee par la dll a cet effet. BruNews, ciao...
|
|
dimanche 9 novembre 2003 à 20:43:45 |
Re : [HOOK]Encore le meme probleme..

bdkiller
|
je comprends le fonctionnement maintenant un peu mieux.. les evenements lors des appuis sont dans la dll, dll installe le hook.. mais je ne sais pas mettre tout ca en oeuvre.. :( tu peux pas me corriger mon code stp?
|
|
dimanche 9 novembre 2003 à 20:54:20 |
Re : [HOOK]Encore le meme probleme..

BruNews
|
Il me faudrait le but exact de cette dll, je prefere l'ecrire moi meme que corriger, c'est moins long. BruNews, ciao...
|
|
dimanche 9 novembre 2003 à 22:52:46 |
Re : [HOOK]Encore le meme probleme..

BruNews
|
Je t'ai fait exemple complet, DLL + exe avec boutons pour hook et unhook. Mon exemple insere la date dans la 1ere fenetre Notepad trouvee (je n'ai pas WinAmp) quand on appuie sur F8. Simplement suffit d'envoyer F5 sur la Notepad. Je pose exemple en source, tu iras prendre. BruNews, ciao...
|
|
lundi 10 novembre 2003 à 00:46:39 |
Re : [HOOK]Encore le meme probleme..

bdkiller
|
Merci beacoup! Je vais voir la source. Le but de la DLL et/ou de prog:
Prog se lance, je lance aussi WinAmp. Ensuite je lance mon jeu, donc mon prog part en arrière plan, mais il surveille l'appui sur la touche F8 pour lancer la lecture à winamp, tout en arrière plan (car le jeu est en premier plan).
|
|
lundi 10 novembre 2003 à 01:07:45 |
Re : [HOOK]Encore le meme probleme..

bdkiller
|
Superbe source BruNews! Merci beacoup! J'ai testé et ça marche parfaitement, ce que j'ai besoin!! Juste une petite question: Comment dans ce cas: mettre des "macros", du style VK_MENU + 41 ? Merci encore milliard de fois!
|
|
lundi 10 novembre 2003 à 09:14:57 |
Re : [HOOK]Encore le meme probleme..

BruNews
|
Combinaisons de touche, tu dois tester GetAsyncKeyState ou GetKeyState. BruNews, ciao...
|
|
Cette discussion est classée dans : code, wparam, color, winamp, lparam
Répondre à ce message
Sujets en rapport avec ce message
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
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 (
Hooks [ par 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 d
Combox me bloquant l'appli [ par SnOOpss ]
Bonjour j'ai essayé de simplifier au maximum mon code mais meme codé comme cela j'ai le meme probleme. Tant que je clique par sur le comboBox tout est
Sous classement foireux [ par HeavenForsaker ]
Mon sous classement n'a pas l'air de fonctionner correctement, je voudrais receptionner le message WM_MOVING lors du déplacement de ma fenêtre. Voila
Programmation C++ [ par spiky31 ]
Bonjour Un peu de code d'abord : class A { public : LRESULT CALLBACK proc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam); A() {
Win32 problème. [ par TeniX ]
Salut, Voila j'ai crée de maniere simple une source qui exprime mon problème , je trouve pas la source du problème , enfaite quand les fenêtres sont l
PROBLEME DE CHARGEMENT JPEG DANS UN ECRAN DE VEILLE [ par Batman60 ]
bonjourclic droit sur l'exe et puis "tester" le prog fonctionne à merveille mais une fois installé à l'execution de l'ecran de veille les textures jpe
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
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
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|