2010-08-05 123 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