Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сделать глобальный хук? 
:(
    Опции темы
Snoofie
Дата 14.9.2004, 23:17 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Приветствую!
Модет у кого есть примерчик как сделать глобальный хук клавиатуры? Например для создания keylog'erа. Это вообще возможно? Помогите с примерчиком плз.
  Вверх
Kurt
Дата 15.9.2004, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлеченный
***


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

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



Глобальный хук?
Это надо смотреть в сторону WinAPI, имхо, на .NET такого не сделаешь.. хм.. разве что вызов native dll'ей, но смысла тут использовать .NET вообще нет.


--------------------
Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед)
...
Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн)
PM ICQ   Вверх
seagull
Дата 16.9.2004, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



В данный момент я делаю подобную систему на VS C#.NET. И тут все выглядет абсолютно аналогично программирование не под .NET.
Самые необходимые вам функции SetWindowsHookEx и UnhookWindowsHookEx. В МСДН на эти функции есть примеры.

PS. Для того чтобы хук был глобальным обязательным условием есть то, что функция которая вызывается в хук-цепочка должна находится в ДЛЛ.

Snoofie, если Вы подскажете интересный способ как пересылать назад эту информацию в основное тело программы буду очень признателен.

PM MAIL   Вверх
Kurt
Дата 16.9.2004, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлеченный
***


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

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



Цитата
если Вы подскажете интересный способ как пересылать назад эту информацию

...Виноват, не понял, о какой информации идет речь.. withstupid.gif


--------------------
Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед)
...
Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн)
PM ICQ   Вверх
seagull
Дата 16.9.2004, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Kurt простите за мутную формулировку. smile.gif
Имеется ввиду что при установке хука мы передаем функции-обаботчик из ДЛЛ. Но проблема в том, как передать информацию из этой функции в саму програму.
Ведь реально эту функция запускается с адресным пространством процесса, которому назначается это сообщение, а следовательно ни функции нашей программы, которая создала хук, ни область данных не доступны.
Пока что мне на ум приходит лишь возможность использовать Pipe. Но все же хотелось бы какое-то более элегантное решение.

PM MAIL   Вверх
stab
Дата 18.9.2004, 05:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

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



seagull, не думаю что, что-то элегантное найдется... можно конечно WM_COPYDATA использовать или через сокеты слать smile.gif на худой конец shared mapped memory, но толку с этого -- всеравно все ручками писать sad.gif не видел я готовых простых решений для пересылки структур данных между процессами. Можно конечно старый добрый COM использовать, тогда все по-уму будет, но ручками через теже pipes явно проще и быстрее smile.gif


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Vaulter
Дата 21.9.2004, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



а как же делают глобальные горячие клавиши????? если нет никакой dll ?


--------------------
PM MAIL WWW ICQ   Вверх
seagull
Дата 21.9.2004, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Vaulter @ 21.9.2004, 06:45)
а как же делают глобальные горячие клавиши????? если нет никакой dll ?

Через ВинАпи сделать глобальный хук (в том числе и на клавиатуру), который был бы в теле программы невозможно. Так как процедура хука по определению должна быть доступна всем процессм.
PM MAIL   Вверх
Solnishka
Дата 3.10.2005, 10:21 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Народ!!! Такой вопрос: как при помощи хука заставить символьную клавишу производить действие стрелки? Вроде и подменяется клавиша на стрелку, но не передвигается курсор, хоть ты че хошь с ним делай!!! smile
  Вверх
oleg1973
Дата 3.10.2005, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

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



ну дык поиск рулит по форуму )
уже писали про хук без длл (в ехешнике)
только по любому он там будет в виде отдельной процедуры естественно


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
#Sage
Дата 4.10.2005, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Snoofie (да и всем), думаю стоит глянуть эти две ссылки:

http://www.codeproject.com/csharp/GlobalSystemHook.asp
http://www.codeproject.com/csharp/globalhook.asp


PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




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


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

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