Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Глобальный хук и запись в файл


Автор: Cyclone 30.9.2007, 12:19
Кнопочки [удалить тему] не нашлось, так что наспех переделаю вопрос. smile
_______________________________________________________________

Привет.
Пишу простой глобальный клавиатурный хук, смысл которого в записи всех нажатых клавиш-символов в отдельном файле.

Получаю символ внутри ф-ции хука (в .dll'ке): 
Код
char c=char(MapVirtualKeyW(wParam,2));
 Сама функция хука вызывается исправно, но с записью символов в файл имеются проблемы.
С помощью fprintf всё получается. Но с CFile - нет (просто хочу разобраться).
Код
            CFile logfile;
            logfile.Open(L"d:\!log.txt",CFile::modeCreate | CFile::modeWrite);
            logfile.Write((char *)c,sizeof(c));
            logfile.Close();

Выдаёт Debug Assertion Failed! Файл создаётся, но остаётся пустым. Может, в коде где ошибся?

И ещё...
Хочется, чтобы лог-файл создавался в папке с .exe'шником.
А так как библиотека, создающая файл, используется разными процессами (хук глобальный), относительный адрес "!log.txt" не даст нужного результата.
Как получить путь к папке с .exe'шником, установившим хук?
Если можно, поподробнее и с комментами: в VC пока новичёк.

help me smile

Автор: zkv 30.9.2007, 18:53
"d:\!log.txt" - неправильно
надо экранировать слеши:
"d:\\!log.txt"
Цитата(Cyclone @  30.9.2007,  12:19 Найти цитируемый пост)
Выдаёт Debug Assertion Failed!

Жми Retry и смотри, где падает.

Добавлено @ 18:53
Цитата(Cyclone @  30.9.2007,  12:19 Найти цитируемый пост)
Кнопочки [удалить тему] не нашлось

потому что ее нет

не заметил
Цитата

 logfile.Write((char *)c,sizeof©);

если с типа char, то так делай:
Код

 logfile.Write( &c,sizeof(c));


Автор: Cyclone 3.10.2007, 00:50
Ещё раз задам вопрос, как получить и передать .dll'ке путь к папке с .exe'шником основной программы?

Автор: SenkraD 3.10.2007, 07:57
Cyclone, ну так сделай в DLL'ке глобальную експортируемую переменную и перед установкой хука передай в неё путь к своей проге.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)