Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.038 c
1-1084813088
Sour
2004-05-17 20:58
2004.05.30
JvInspecor из JCVL


3-1083741652
Demoniak
2004-05-05 11:20
2004.05.30
Удаление некоторых записей


14-1084448229
human
2004-05-13 15:37
2004.05.30
Что такое ИМХО


3-1084236623
pulp
2004-05-11 04:50
2004.05.30
Ошибка совметсного использования


11-1074703352
Vladimir Kladov
2004-01-21 19:42
2004.05.30
Версия 1.90





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский