2010-08-05 23 views
1

J'essaie de comprendre les crochets de Windows en écrivant quelques crochets de clavier. J'ai une fonction:pourquoi cette fonction échoue-t-elle?

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; 
} 

... que je tente d'appeler d'ici, mais il échoue presque toujours. Pourquoi?

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); 
} 

Répondre

4

je pense qu'il est parce que vous essayez d'ouvrir un fichier appelé “ nom ”, plutôt que d'utiliser quel que soit le nom de fichier a été fourni. Je suppose que vous écrivez un keylogger. Il devrait se lire comme suit:

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

Je le vois maintenant. Merci :) –