2010-08-05 115 views
1

我想通过编写几个键盘挂钩来理解windows挂钩。 我有一个函数:为什么这个函数失败?

bool WriteToFile(WPARAM keyCode, char * fileName) 
{ 
    ofstream fout("filename"); 
    if(fout.is_open()) 
    { 
     if(keyCode>=0x030 && keyCode<0x039) 
      fout<< (keyCode - 0x030); 
      fout.close(); 
     return true; 
    } 
    else  fout.close(); 
     return false; 
} 

...我试图从这里打电话,但它几乎总是失败。为什么?

LRESULT CALLBACK KbHookProc(int nCode, WPARAM wParam, LPARAM lParam) 
{ 
if(nCode > 0) 
      { 
       WriteToFile(wParam,"log.txt"); //this function always fails . Why 
      } 
else return CallNextHookEx(hCurrentHook, nCode, wParam, lParam); 
} 

回答

4

我想这是因为你试图打开一个名为“名”文件,而不是使用被提供的任何文件名。我假设你正在写一个键盘记录器。它应该是:

bool WriteToFile(WPARAM keyCode, char * fileName) 
{ 
    // cause output to go to the end of the file by using ios_base::app 
    ofstream fout(fileName, ios_base::app); 
    if(fout.is_open()) 
    { 
     if(keyCode>=0x030 && keyCode<0x039) 
      fout<< (keyCode - 0x030); 
      fout.close(); 
     return true; 
    } 
    else  fout.close(); 
     return false; 
} 
+0

我现在看到它。谢谢 :) – 2010-08-05 04:36:46