Bonjour a tous,
voila dans le cadre d'un développement d'un programme, je voudrais lui rajouter une DLL, pour avoir un hook globale, pour que lorsque j'appuie sur une touche le programme en question effectuer une action...
seulement je n'arrive pas à transmettre le message au programme en question, voici la code de la DLL:


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
// header
#include <windows.h>
 
// enleve avertissement de compilation
#pragma warning(disable: 4311) // convertion HHOOK -> int
 
// var
HINSTANCE thismod; // hisntance de la dll
HHOOK hhk; // hook
HWND prog; // HWND de la ou on veu envoyer le message
int mess; // param, "la ou on doit envoyer le message"
 
// fonction principale DLL
BOOL WINAPI DllMain(HINSTANCE hDll, DWORD dwReason, LPVOID Reserved)
{
	if(dwReason == DLL_PROCESS_ATTACH) thismod = hDll;
		return 1;
}
 
// hook
LRESULT CALLBACK kbdWinAmp(int nCode, WPARAM wParam, LPARAM lParam)
{
	// reception d'un message
	if(nCode >= 0)
		if(wParam == VK_F10)// appuie sur F10
			SendMessage(prog, WM_COMMAND, NULL, mess);
 
	return CallNextHookEx(hhk, nCode, wParam, lParam);
}
 
// mise en place hook
extern "C" __declspec(dllexport) int __stdcall Intercepte(HWND hWnd, int Case)
{
	prog = hWnd;
	mess = Case;
 
	if(!hhk) // si pas deja mi
		hhk  = SetWindowsHookEx(WH_KEYBOARD, kbdWinAmp, thismod, 0);
 
	return (int) hhk;
}
 
// desactivation hook
extern "C" __declspec(dllexport) void __stdcall Relache()
{
	if(hhk) // si mi
	{
		UnhookWindowsHookEx(hhk); 
		hhk = 0;
	}
}
voila en esperant que vous pourrez m'aider !
Merci par avance
Bob