2010-08-05 3 views
1

Я пытаюсь понять крючки окон, написав несколько клавиатурных крючков. У меня есть функция:Почему эта функция не работает?

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

Я вижу его сейчас. Благодаря :) –

Смежные вопросы