Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.30;
Скачать: CL | DM;

Вниз

Антихуковое приложение   Найти похожие ветки 

 
juiceman ©   (2004-04-11 04:36) [0]

Есть некое приложение (чужое), клавиатурные сообщения которого я хочу отлавливать. ( Не получается. Во всех других ловит а в нем нет !


 
Cobalt ©   (2004-04-11 10:03) [1]

Удалено модератором
Примечание: Offtopic


 
juiceman ©   (2004-04-12 14:47) [2]

Не подумайте только что пишу клавиатурный шпион, задача другая - надо отлавливать нажатие на Enter в определенном окне. Пробовал установить горячую клавишу на Enter - управление я получаю но там (в чужом окне) нажатие не обрабатывается - ничего не происходит.


 
juiceman ©   (2004-04-13 13:25) [3]

Не могу понять каким образом это делается. Перехват сообщения о нажатии клавиши выполняется раньше, чем это сообщение получает (и может обработать) исследуемое окно. Может оно тоже ставит глобальный хук, причем выше моего и если нажатие в его окне то не передает управление далее по цепочке хуков ? Хотя... Библиотек у этого приложения кажись нет, и я запускаю свою прогу уже после его запуска.


 
FiGr_   (2004-04-13 14:35) [4]

Текст библиотеки

library AsDll;

uses
 Windows;
var
  MyHookHandle:HHook = 0;

function MyCoolHook(Code: integer; wParam: word; lParam: Longint):LongInt;stdCall;
begin
 if code<0 then Result := CallNextHookEx(MyHookHandle,Code, wParam, lParam)
 else
  begin
    result:=0;                                              
    if wParam = VK_RETURN then
    begin
      //Здесь ты должен выполнять свои действия
      ...
      result:=1;
   CallNextHookEx(MyHookHandle,Code, wParam, lParam);
    end;
  end;
end;

procedure SetHook;stdCall;Export;
begin
MyHookHandle := SetWindowsHookEx(WH_Keyboard, @MyCoolHook, hInstance, 0);
end;

procedure UnHook;stdCall;Export;
begin
 UnhookWindowsHookEx(MyHookHandle);
end;

exports
SetHook,
Unhook;
Begin
 //SetHook;
end.


Текст программы для установки HOOKa


unit Unit1;

interface        

uses
 Windows, Forms;

type
 TForm1 = class(TForm)
   procedure FormCreate(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;
var
 Form1: TForm1;

implementation
procedure SetHook;stdCall; external "AsDll.Dll";//
procedure UnHook;stdCall; external "AsDll.Dll";

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 SetHook;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 Unhook;
end;
end.


 
juiceman ©   (2004-04-13 16:27) [5]

И что это дает ?


 
juiceman ©   (2004-04-16 12:34) [6]

???


 
Cobalt ©   (2004-04-16 15:41) [7]

И что именно не получается???
Код давай!!!


 
juiceman ©   (2004-04-16 16:01) [8]


> Cobalt ©   (16.04.04 15:41) [7]
> И что именно не получается???
> Код давай!!!

Не отлавливаются нажатия на любые клавиши только в определенном приложении, любом его дочернем окне. Назовем это приложение "XApp" =)
Скачал чужой key-перехватчик, запустил (поверх своего), один раз он отловил нажатие в ХАрр на Enter, потом выдалось виндовое окно про ошибку памяти - что-то про ReadOnly, и все - больше он ничего не перехватывает.
-------------
Кода мне не жалко, но смысл ? Во всех приложениях отлавливает, а в этом нет. Значит код рабочий, просто само приложение не хочет чтобы нажатия в его пределах отлавливали.


 
Cobalt ©   (2004-04-16 17:27) [9]

Ну так, Гюльчатай - открой личико.
Что за "XApp"?
Может, это окно WinLogon?


 
juiceman ©   (2004-04-16 17:35) [10]

сервер клуба, v 4.12.6.
читайте [2] - мне не нужны все клавиши, мне нужен только Enter.


 
Rouse_ ©   (2004-04-16 20:15) [11]

> [4] FiGr_   (13.04.04 14:35)
Кто ж тебя учил ТАК хуки писать?


 
AndersoNRules ©   (2004-04-17 12:39) [12]

The hook procedures for some types of hooks can only monitor messages; others can modify messages or stop their progress though the chain, preventing them from reaching the next hook procedure or the destination window.
(MSDN)


 
juiceman ©   (2004-04-18 13:16) [13]

Классно. А там не написано как такое сделать, а еще лучше убить ?
Дайте пожалуйста ссылку на этот материал, сам думаю не смогу найти


 
AndersoNRules ©   (2004-04-18 19:57) [14]

Prosto ne vizivai funkzziyu:  CallNextHookEx(MyHookHandle,Code, wParam, lParam);


 
nikkie ©   (2004-04-18 20:23) [15]

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

если же окно все-таки получает сообщений, а дело в хитром хуке (хотя, еще вопрос, что у тебя за система - насколько я помню, Алексей Павлов написал, что на W2K отсутствие вызова CallNextHookEx не приводит к разрыву цепочки вызовов хуков), то можно попробовать заменить оконную процедуру на свою.


 
juiceman ©   (2004-04-19 17:11) [16]

2 nikkie:

> в любом случае стоит попробовать хуки разных типов

Сначала я ставил хук типа WH_Keyboard, теперь WH_CALLWNDPROC. Какие еще варианты ? WH_GETMESSAGE ?

> хотя, еще вопрос, что у тебя за система

WinXP Home Edition

> можно попробовать заменить оконную процедуру на свою.

Чью оконную процедуру ? Окна самого приложения, главного ,  или его дочернего окна в котором и надо отлавливать нажатия?


 
nikkie ©   (2004-04-19 19:47) [17]

>Чью оконную процедуру?
окна, которое получает сообщение.
только сначала убедиться с помощью какого-нибудь spy++, что сообщение туда приходит.

>Сначала я ставил хук типа WH_Keyboard, теперь WH_CALLWNDPROC. Какие еще варианты ? WH_GETMESSAGE ?
можно попробовать WH_GETMESSAGE, а можно WH_JOURNALRECORD, WH_KEYBOARD_LL. сам я с хуками не работал, советовать не возьмусь. почему WH_CALLWNDPROC может не работать - понятно. почему WH_KEYBOARD не работает - может в самом деле не вызывается CallNextHookEx... а вообще, что за приложение ты мучаешь? а то окажется что это java-приложение на swing-е. полгода назад здесь помнится человек мучался с oracle forms.



Страницы: 1 вся ветка

Текущий архив: 2004.05.30;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.03 c
11-1073581090
Rasperepodviipodvert
2004-01-08 19:58
2004.05.30
Kol


7-1082542124
DenK_vrtz
2004-04-21 14:08
2004.05.30
Как дать пользователю права администратора


3-1083611520
Mister
2004-05-03 23:12
2004.05.30
ламерский вопрос по DBGRID


7-1082460336
ZMaximI
2004-04-20 15:25
2004.05.30
Резидент


14-1084074388
Апач
2004-05-09 07:46
2004.05.30
Вечный вопрос: Мужчина и Женщина