почему эта функция не работает? - PullRequest
1 голос
/ 05 августа 2010

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

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

1 Ответ

4 голосов
/ 05 августа 2010

Я думаю, это потому, что вы пытаетесь открыть файл с именем «имя файла», а не с помощью какого-либо имени файла было предоставлено.Я полагаю, вы пишете кейлоггер.Следует читать:

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...