Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Глобальный хук и запись в файл, Не удаётся записать 
:(
    Опции темы
Cyclone
Дата 30.9.2007, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 2.5.2007

Репутация: нет
Всего: нет



Кнопочки [удалить тему] не нашлось, так что наспех переделаю вопрос. 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

Это сообщение отредактировал(а) Cyclone - 30.9.2007, 13:44
PM MAIL   Вверх
zkv
Дата 30.9.2007, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 16
Всего: 92



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



Это сообщение отредактировал(а) zkv - 30.9.2007, 18:56
PM MAIL   Вверх
Cyclone
Дата 3.10.2007, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 2.5.2007

Репутация: нет
Всего: нет



Ещё раз задам вопрос, как получить и передать .dll'ке путь к папке с .exe'шником основной программы?
PM MAIL   Вверх
SenkraD
Дата 3.10.2007, 07:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 4
Всего: 23



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


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0875 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.