目的:
我想在DLL中实现按Pause后就打开个Messagebox,但是我用了SetWindowsHookEX()
Function后并在LRESULT CALLBACK HookProc() function 中调用了CallNextHookEx(),但是当我挂上钩子后发现按Pause 可以实现我的功能,但是其他的按键却不好用了,不知何故,HELP ME!!!
源程序:
#include "stdafx.h"
#include "myhookl.h"
#pragma data_seg ("share")
HHOOK hhkHook=NULL;
HINSTANCE hInstance=NULL;
#pragma data_seg ()#pragma comment(linker,"/SECTION:share,RWS")BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
hInstance=(HINSTANCE)hModule;
return 1;
}LRESULT CALLBACK HookProc(int nCode,WPARAM wParam,LPARAM lParam)
{
CallNextHookEx(hhkHook,nCode,wParam,lParam);
if(nCode>=0)
{
switch(wParam)
{
case VK_PAUSE:
if(!(::FindWindowEx(0,0,0,"my")))
MessageBox(0,"my ook","my",MB_OK);
// return 1;
}
//return 1;
}
return 1;
}
BOOL install()
{
hhkHook=::SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)HookProc,hInstance,0);
return 1;
}
BOOL uninstall()
{
UnhookWindowsHookEx(hhkHook);
return 0;
}
我想在DLL中实现按Pause后就打开个Messagebox,但是我用了SetWindowsHookEX()
Function后并在LRESULT CALLBACK HookProc() function 中调用了CallNextHookEx(),但是当我挂上钩子后发现按Pause 可以实现我的功能,但是其他的按键却不好用了,不知何故,HELP ME!!!
源程序:
#include "stdafx.h"
#include "myhookl.h"
#pragma data_seg ("share")
HHOOK hhkHook=NULL;
HINSTANCE hInstance=NULL;
#pragma data_seg ()#pragma comment(linker,"/SECTION:share,RWS")BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
hInstance=(HINSTANCE)hModule;
return 1;
}LRESULT CALLBACK HookProc(int nCode,WPARAM wParam,LPARAM lParam)
{
CallNextHookEx(hhkHook,nCode,wParam,lParam);
if(nCode>=0)
{
switch(wParam)
{
case VK_PAUSE:
if(!(::FindWindowEx(0,0,0,"my")))
MessageBox(0,"my ook","my",MB_OK);
// return 1;
}
//return 1;
}
return 1;
}
BOOL install()
{
hhkHook=::SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)HookProc,hInstance,0);
return 1;
}
BOOL uninstall()
{
UnhookWindowsHookEx(hhkHook);
return 0;
}
LRESULT CALLBACK HookProc(int nCode,WPARAM wParam,LPARAM lParam)
{
if(nCode>=0)
{
switch(wParam)
{
case VK_PAUSE:
if(!(::FindWindowEx(0,0,0,"my")))
MessageBox(0,"my ook","my",MB_OK);
// return 1;
}
//return 1;
}
CallNextHookEx(hhkHook,nCode,wParam,lParam);
return 1;
}
怎么回事呀
LRESULT CALLBACK HookProc(int nCode,WPARAM wParam,LPARAM lParam)
{
WORD wKey = (WORD)wParam;
if((HC_ACTION == nCode) {
switch(wKey)
{
case VK_PAUSE:
if(!(::FindWindowEx(0,0,0,"my")))
MessageBox(0,"my ook","my",MB_OK);
// return 1;
}
//return 1;
}
CallNextHookEx(hhkHook,nCode,wParam,lParam);
return 1;
}
//for more details ,see
http://www.vckbase.com/document/viewdoc.asp?id=271
谢谢各位!!