Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: WinAPI и системное программирование > В вин8 не работает SetWindowsHookEx |
Автор: MasterOfRegex 9.2.2015, 11:10 |
Делал я программку, которая показывала координаты мыши, цвет под курсором и расстояния на экране (типа pixie). Работала в винХР, в вин7, а вин8 не даёт выполнить SetWindowsHookEx(WH_JOURNALRECORD,@HookProc,HInstance,0); Эта процедура, как положено, находится в dll. С пом. Гугла прочёл на одной странице, что для вин8 это теперь должен быть сервис, а простой прикладной программе хоть с правами system это сделать больше не дано. Это верно? |
Автор: Illusion Dolphin 9.2.2015, 12:22 |
Какая битность у вашей DLL? 32/64? Если идёт речь про Windows Store app, то там эта функция не поддерживается. В описании https://msdn.microsoft.com/en-us/library/windows/desktop/ms644990%28v=vs.85%29.aspx нет ничего про сервисы |
Автор: MasterOfRegex 9.2.2015, 13:40 |
32 бит, проверял на вин 8.1 32 бит (на планшете), не работает. |
Автор: Illusion Dolphin 9.2.2015, 17:05 | ||||||||
https://msdn.microsoft.com/en-us/library/windows/desktop/ms644983%28v=vs.85%29.aspx
Вольный перевод: длл не надо.
Код ошибки в студию как минимум |
Автор: MasterOfRegex 10.2.2015, 12:10 |
Вывел getlasterror: 5 (отказано в доступе). И ещё забыл добавить: CreateFont(... ANSI_CharSet ... 'Arial') создаёт шрифт, в котором нет русских букв (хотя, win8.1 русская). На win7 и xp они были. Вначале я сделал всё в ехе файле, на моём ПК работало, но на другом ПК с такой же виндой висло. Кажется, на wasm.ru, подсказали, что обработчик хуков должен быть в dll, т.к. dll инжектируются в процессы. Я нашёл примерчик на Дельфи, и эта программка у меня заработала. |
Автор: Illusion Dolphin 10.2.2015, 13:15 | ||||
Перед тем как читать wasm прочитайте официальную документацию.
Может дело в UAC ? Попробуйте полностью отключить для проверки. P.S. про шрифты - отдельную тему надо. |
Автор: MasterOfRegex 21.2.2015, 12:36 |
Зашёл на планшете в контроль учётных записей, поставил ползунок вниз на "никогда не уведомлять", перезагрузился и всё равно ошибка 5. |
Автор: Illusion Dolphin 21.2.2015, 15:49 | ||
Вот тут http://stackoverflow.com/questions/9165666/setwindowshookex-for-wh-journalrecord-fails-under-vista-windows-7 нашлось что нужен манифест с
Вот тут описано как http://stackoverflow.com/questions/4757533/delphi-7-vista-windows-7-manifest |