И снова хук... И снова нужно проверить в Висте :)

Обсуждение проектов наших жителей.
Вы можете выставить проект на тест или найти помощников для его реализации.

Модератор: BV

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

И снова хук... И снова нужно проверить в Висте :)

Сообщение arthur2 » 20.04.2009 (Пн) 9:56

На этот раз журнальный хук - без дополнительных библиотек, всё в одном проекте

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

И заодно вопрос к знатокам, в связи с моим прошлым глобальным хуком:
ANDLL писал(а):Ну я и без теста могу сказать что не будет глобальный хук работать в окнах 64-разрядных процессов. Это означает что в x64 в проводнике, калькуляторе, паинте, блокноте и иже с ними хуки не перехватят ничего.

А журнальный хук будет работать с чужими окнами в 64-разрядных системах?
journal hook.zip


Добавлено:
В связи с сообщением от dr.MIG закомментировал переустановку хука. Так что если у кого-нибудь вдруг случится то же самое, нажмите ctrl+esc и винда отменит хук. Впрочем, кажется, глюк был всё же одноразовый :)
У вас нет доступа для просмотра вложений в этом сообщении.
Последний раз редактировалось arthur2 27.04.2009 (Пн) 16:39, всего редактировалось 4 раз(а).
Артур
 
   

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Re: И снова хук... И снова нужно проверить в Висте :)

Сообщение dr.MIG » 20.04.2009 (Пн) 13:25

Не знаю как на Висте, но ХР он убил (отключилась реакция вообще на всё, помог только Reset). Так и было задумано? :)
Salus populi suprema lex

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: И снова хук... И снова нужно проверить в Висте :)

Сообщение arthur2 » 20.04.2009 (Пн) 13:27

dr.MIG писал(а):Не знаю как на Висте, но ХР он убил (отключилась реакция вообще на всё, помог только Reset). Так и было задумано?

Ни фига себе... А у меня работает :) И как найти косяк? Ты смотрел код?

А вырубило сразу, или он всё-таки поработал немного?
Артур
 
   

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: И снова хук... И снова нужно проверить в Висте :)

Сообщение arthur2 » 20.04.2009 (Пн) 15:11

Я там временно - до выяснения обстоятельств - закомментировал возобновление хука при его отмене.

Так что если такая фигня будет у кого-то ещё, нажмите ctrl + esc и windows отключит хук.

dr.MIG
У меня нет даже особых предположений, почему так.

В первом варианте - как я сделал изначально - процедура хука выглядит так:
Код: Выделить всё
'1 вариант journalHook_1.exe
Public Function JournalRecordProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
 
  If nCode Then '<0,HC_SYSMODALOFF,HC_SYSMODALON
     JournalRecordProc = CallNextHookEx(hJournalHook, nCode, wParam, lParam)
  Else 'HC_ACTION
     Dim eMsg As EVENTMSG
     CopyMemory eMsg, ByVal lParam, Len(eMsg)
     JournalRecordProc = CallNextHookEx(hJournalHook, nCode, wParam, lParam)
     On Error Resume Next
     clHook.JournalRecord eMsg.wMsg, eMsg.lParamLow, eMsg.lParamHigh, eMsg.msgTime, eMsg.hWndMsg
  End If
End Function


Я попробовал перенести вызов CallNextHookEx на после обработки
Код: Выделить всё
'2 вариант journalHook_2.exe
Public Function JournalRecordProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
 
  If nCode Then '<0,HC_SYSMODALOFF,HC_SYSMODALON
     JournalRecordProc = CallNextHookEx(hJournalHook, nCode, wParam, lParam)
  Else 'HC_ACTION
     Dim eMsg As EVENTMSG
     CopyMemory eMsg, ByVal lParam, Len(eMsg)
     On Error Resume Next
     clHook.JournalRecord eMsg.wMsg, eMsg.lParamLow, eMsg.lParamHigh, eMsg.msgTime, eMsg.hWndMsg
     JournalRecordProc = CallNextHookEx(hJournalHook, nCode, wParam, lParam)
  End If
End Function


И вообще закомментировать CallNextHookEx :oops:
Код: Выделить всё
'3 вариант journalHook_3.exe
Public Function JournalRecordProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
 
  If nCode Then '<0,HC_SYSMODALOFF,HC_SYSMODALON
     JournalRecordProc = CallNextHookEx(hJournalHook, nCode, wParam, lParam)
  Else 'HC_ACTION
     Dim eMsg As EVENTMSG
     CopyMemory eMsg, ByVal lParam, Len(eMsg)
     On Error Resume Next
     clHook.JournalRecord eMsg.wMsg, eMsg.lParamLow, eMsg.lParamHigh, eMsg.msgTime, eMsg.hWndMsg
'     JournalRecordProc = CallNextHookEx(hJournalHook, nCode, wParam, lParam)
  End If
End Function

У меня работают все три этих варианта. Посмотри у себя, если не трудно :oops:

Если вдруг снова косяк - ctrl+esc должен снять хук в любом случае :)
У вас нет доступа для просмотра вложений в этом сообщении.
Артур
 
   

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Re: И снова хук... И снова нужно проверить в Висте :)

Сообщение dr.MIG » 20.04.2009 (Пн) 15:23

У меня все варианты теперь работают без проблем. Может это был одноразовый глюк, хотя сам не понимаю чем он мог быть вызван. А зависание произошло следующим образом — запустил скомпилированный exeшник и сразу же отключилась реакция на мышь и клавиатуру (нажатие клавиш не приводило к отображению в окне твоего примера кодов клавиш). Нажатие Alt+Ctrl+Delete вызвало появление TM, но перезагрузиться удалось только reset'ом. Вроде ничего особенного запущено не было, работал антивирус Avira.

Add: запустил самый первый пример, ... Сейчас все о'к зависания нет. :alien:
Salus populi suprema lex

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: И снова хук... И снова нужно проверить в Висте :)

Сообщение arthur2 » 20.04.2009 (Пн) 15:34

уф-ф... немного отлегло :)

И всё-таки хотелось бы понять, откуда ждать подводных камней, если что.
Вроде ничего особенного запущено не было, работал антивирус Avira.
А сейчас - когда пример работает - антивирус включен?
Артур
 
   

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Re: И снова хук... И снова нужно проверить в Висте :)

Сообщение dr.MIG » 20.04.2009 (Пн) 15:43

Да, все тоже самое... Антивирус работает.
Salus populi suprema lex

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: И снова хук... И снова нужно проверить в Висте :)

Сообщение arthur2 » 20.04.2009 (Пн) 15:52

вот блин... А антивирус высказывался как-нибудь по поводу того, что кто-то в системе хочет поставить хук? Может это он подвис, размышляя - разрешать-не разрешать?

Ладно, буду надеяться, что глюк был одноразовый :D
Артур
 
   

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Re: И снова хук... И снова нужно проверить в Висте :)

Сообщение dr.MIG » 20.04.2009 (Пн) 16:06

Нет, в том-то и дело, что никаких предупреждений ни от чего не было, да вроде и в коде нет никаких подозрительных мест.
Salus populi suprema lex

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: И снова хук... И снова нужно проверить в Висте :)

Сообщение arthur2 » 22.04.2009 (Ср) 11:41

to All
Ну что, больше ни у кого рука не поднялась проверить? Да ладно, не бойтесь, пример не кусается :)

dr.MIG Тебе, как единственному откликнувшемуся, моя персональная спасиба :D
Артур
 
   

v@Mp!rO
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 17.01.2004 (Сб) 17:45

Re: И снова хук... И снова нужно проверить в Висте :)

Сообщение v@Mp!rO » 27.04.2009 (Пн) 14:28

arthur2 писал(а):to All
Ну что, больше ни у кого рука не поднялась проверить? Да ладно, не бойтесь, пример не кусается :)


Vista Ultimate x64. UAC отключен, залогинен под администратором. Хук работает отлично в любых окнах. В том числе в окнах 64-х разрядных процессов (тестировал на стандартном calc.exe).

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: И снова хук... И снова нужно проверить в Висте :)

Сообщение arthur2 » 27.04.2009 (Пн) 16:21

v@Mp!rO
Спасибо! Отличная новость :)

Понять бы ещё, как с включенным UAC получить разрешение на хуканье :oops:
Артур
 
   


Вернуться в Наши проекты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 40

    TopList