Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 10.09.2008, 21:30   #1
Черничный
Форумчанин
 
Регистрация: 27.01.2007
Адрес: Санкт - Петербург
Сообщений: 293
Репутация: 45

icq: 380600600
skype: neevirus
По умолчанию Отследить нажатие клавиши для отдельного окна

А можно отслеживать нажатые клавиши для отделдьного окна, и не используя внешнюю dll, что бы все было в exe (это вроде локальный hook). И воощем как отследить. У меня так, если нашел активное окно с таким то заголовком, то шпионить... Полазал по форуму, но что то нужного куска кода я не обнаружил.
Черничный вне форума   Ответить с цитированием
Старый 11.09.2008, 00:21   #2
eyeofthedemon
Заблокирован
 
Регистрация: 09.09.2008
Сообщений: 8
Репутация: 4
По умолчанию

Ет кажысь нереальна без...DLL
eyeofthedemon вне форума   Ответить с цитированием
Старый 11.09.2008, 00:46   #3
Черничный
Форумчанин
 
Регистрация: 27.01.2007
Адрес: Санкт - Петербург
Сообщений: 293
Репутация: 45

icq: 380600600
skype: neevirus
По умолчанию

читал что глобальная с dll, а локальная для какого то приложения можно из exe
Черничный вне форума   Ответить с цитированием
Старый 11.09.2008, 07:48   #4
rpy3uH
добрый няша
СуперМодератор
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Адрес: Солнечное Тбилиси
Сообщений: 4,788
Репутация: 1989
По умолчанию

если захотеть, то можно. В общем, копай в сторону инжекта в другие процессы. Но там уже надо писать базонезависимый код, на Delphi это будет сложновато, но возможно.
rpy3uH вне форума   Ответить с цитированием
Старый 11.09.2008, 18:36   #5
Somebody
Профессионал
 
Регистрация: 08.10.2007
Адрес: Нижегородская обл.
Сообщений: 1,185
Репутация: 801
По умолчанию

Глобальный хук WH_JOURNALRECORD работает без dll
http://www.xakep.ru/magazine/xs/070/040/1.asp
Somebody вне форума   Ответить с цитированием
Старый 11.09.2008, 21:12   #6
Черничный
Форумчанин
 
Регистрация: 27.01.2007
Адрес: Санкт - Петербург
Сообщений: 293
Репутация: 45

icq: 380600600
skype: neevirus
По умолчанию

да это я уже понял и работает для отдельнного приложения а не всей системы
Черничный вне форума   Ответить с цитированием
Старый 12.09.2008, 23:24   #7
Черничный
Форумчанин
 
Регистрация: 27.01.2007
Адрес: Санкт - Петербург
Сообщений: 293
Репутация: 45

icq: 380600600
skype: neevirus
По умолчанию

Ребята, полазал я на журнале хакер, все вроде нашел, но столкнулася с проблемками...
есть строка:
HookHandle := SetWindowsHookEx(WH_JOURNALRECORD, @HookProc, hInstance, 0);

Жалуется на HookProc! В чем дело? HookProc видимо нигде не объявленна, но там ничего я не нашел больше
Черничный вне форума   Ответить с цитированием
Старый 13.09.2008, 00:41   #8
mytant712
 
Регистрация: 09.09.2008
Сообщений: 5
Репутация: 10
По умолчанию

HookProc это твоя процедура обработки перехвата, которая должна быть в dll как я понял.сам сижу с этим разбираюсь(
mytant712 вне форума   Ответить с цитированием
Старый 13.09.2008, 12:20   #9
Черничный
Форумчанин
 
Регистрация: 27.01.2007
Адрес: Санкт - Петербург
Сообщений: 293
Репутация: 45

icq: 380600600
skype: neevirus
По умолчанию

Цитата:
Сообщение от mytant712 Посмотреть сообщение
HookProc это твоя процедура обработки перехвата, которая должна быть в dll как я понял.сам сижу с этим разбираюсь(
Я использую локальный хук, тут не надо dll
http://www.xakep.ru/magazine/xs/070/040/1.asp
вот тут я инфу брал
Черничный вне форума   Ответить с цитированием
Старый 13.09.2008, 16:39   #10
eoln
Профессионал
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,691
Репутация: 2215

icq: 421277094
По умолчанию

Вот небольшая рабочая часть программы.
Код:

var 
  HookHandle: hHook; 

function HookProc(Code:integer; WParam:word; LParam:Longint):Longint; stdcall;
begin 
  //какие-то действия ловушки
  result := CallNextHookEx(HookHandle,code,WParam,LParam);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  HookHandle:=SetWindowsHookEx(WH_JOURNALRECORD, @HookProc, HInstance, 0);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  if HookHandle <> 0 then UnhookWindowsHookEx(HookHandle);
end;

Но учтите ctrl-alt-delete (я этими кнопками пару раз в час пользуюсь) и подобные сочетания вашу ловушку закроют. Лучше обычную с dll-кой сделать и если dll мешается - запихнуть её в ресурсы, а при запуске распаковывать и загружать оттуда ловушку.

Последний раз редактировалось eoln; 13.09.2008 в 16:42.
eoln вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как отследить нажатие кнопки Обновить из PHP? Timpi PHP 4 11.07.2008 09:16
Как отследить отпускание клавиши? Zefick Assembler 2 27.05.2008 19:14
Нажатие клавиши format Assembler 1 05.05.2008 15:25
Отследить нажатие одной кнопки в другом приложении... ActiveX Win Api 4 04.04.2008 23:05
Клавиатура, нажатие клавиши Yogik™ Помощь студентам 4 21.11.2007 01:05


04:57.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru