vc 关于钩子的问题

来源:百度知道 编辑:UC知道 时间:2024/09/25 00:28:57
我做了一个键盘钩子,想要记录所有的按键信息,代码入下
#include <afx.h>
HHOOK g_hmouse;
HHOOK g_hkeyboard;
#pragma data_seg("MYSH")
HWND g_hwnd=NULL;
char buf[10]={0};
#pragma data_seg()
#pragma comment(linker,"/section:MYSH,RWS")

LRESULT CALLBACK MouseProc(
int nCode, // hook code
WPARAM wParam, // message identifier
LPARAM lParam // mouse coordinates
)
{
return CallNextHookEx(g_hmouse,nCode,wParam,lParam);
}

LRESULT CALLBACK KeyboardProc(
int code, // hook code
WPARAM wParam, // virtual-key code
LPARAM lParam // keystroke-message information
)
{
if(GetAsyncKeyState(wParam)&10000000)
{
//char ch=wParam;
char rn[]="\r\n";
// char buf[10]={0};
CFile file("log.txt",CFile::modeReadWrite);
file.SeekToEnd();
GetKeyNameText(lParam,buf,10);
file.Write(buf,str

这个孙鑫老师说的很明白了啊
HWND g_hWnd=NULL;没有被设置为共享的缘故
每切换一个窗口就会重新申请一个句柄
/*----------------*/
LIBRARY Hook
EXPORTS
SetHook @2
SEGMENTS
MYSH READ WRITE SHARED
/*----------------*/
保存为hook.def并加到动态链接库工程中试试