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

Вниз

Нужно в хуке получить Application.Handle   Найти похожие ветки 

 
OlegM ©   (2004-05-19 09:38) [0]

Привет всем!
Как в хуке получить тоже значение что и Application.Handle, делаю FindWindow дак он другое возвращает, в чем траблы?


 
Digitman ©   (2004-05-19 09:54) [1]


> Как в хуке

что значит "в хуке" ? в теле функции, которая указана при вызове SetWindowsHookEx() ? или где ?

и зачем вообще Application.Handle понадобился там ?


 
OlegM ©   (2004-05-19 10:08) [2]

в функции, в dllке мне нужно управлять окном из dll


 
Digitman ©   (2004-05-19 10:26) [3]


> OlegM ©   (19.05.04 10:08) [2]



> нужно управлять окном из dll


ты устанавливаешь глобальный хук ? ну так и передай нужный хэндл через MMF ! Зачем же всякий раз вновь окно искать, если оно никуда не делось ?

реализуй и экспортируй в хук-ДЛЛ процедуру

SetHook(Active: Boolean; hWnd: THandle);

хост-приложение, устанавливающее хук, вызывает эту ф-цию, передавая ей параметры Active = True и hWnd = Application.Handle

в теле ф-ции, прежде чем вызывать SetWindowsHookEx(), создаешь MMF и записываешь туда значение параметра hWnd ... каждый экз-р хук-ДЛЛ, который будет внедряться в АП каждого GUI-процесса, при инициализации получает управление, где из MMF считывается эначение хэндла и запоминается в стат.переменной , с тем чтобы хук-ф-ция, будучи вызыванной в момент хук-события, могла преспокойно взять этот хэндл из стат.переменной и использовать его для работы с этим окном


 
OlegM ©   (2004-05-19 11:53) [4]

Я ненастолько еще в этом силен можно поподробней вот, например незнаю что такое MMF, у меня так подскажите что добавить и исправить, а то уже посинею скоро

var
 H,H1:THandle;

procedure sethook;
begin
 H:= SetWindowsHookEx(WH_KEYBOARD, hook, hInstance, 0);
 if H = 0 then
   messageBox(0,"Ой","ERROR",mb_iconhand);
end;

и сама функция

function hook(c0de, wParam, lParam : integer): Lresult; stdcall;
begin
 if c0de >= 0 then
 begin
   if wParam = VK_ESCAPE then
   begin
     H1:=Findwindow("TForm1",nil);
     if IsIconic(H1)=false then
       PostMessage(H1,WM_SYSCOMMAND,SC_MINIMIZE,0)  ;
     else
       PostMessage(H1,WM_SYSCOMMAND,SC_RESTORE,0)  ;
   end;
   Result:=0;
 end
 else
   Result:=CallNextHookEx(H, c0de, wParam, lParam);
End;


 
Digitman ©   (2004-05-19 12:40) [5]


> OlegM ©   (19.05.04 11:53) [4]


> незнаю что такое MMF


ты статью на этом сайте про глоб.хуки прочитал ? вник, что там и зачем ?


> дак он другое возвращает


> что добавить и исправить


дак ты и не ищешь главное окно аппликации, ты ищешь окно одной из форм этой аппликации

имя класса окна аппликации - "TApplication"
имя окна аппликации - "MyApp", где MyApp - имя исп.файла твоей аппликации (без расширения)

скажем, если исп.файл твоей аппликации называется MyApp.exe, то поиск гл.окна этой аппликации должен выглядеть хотя бы вот так:

FindWindow("TApplication", "MyApp");


 
OlegM ©   (2004-05-19 12:56) [6]

Спасибо))) заробило



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

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

Наверх




Память: 0.48 MB
Время: 0.022 c
14-1086623030
Sanek_metaller
2004-06-07 19:43
2004.06.27
Outpost firewall pro


14-1086891628
DeadMeat
2004-06-10 22:20
2004.06.27
Modem


14-1086747507
Думкин
2004-06-09 06:18
2004.06.27
С днем рождения! 9 июня


1-1086715910
webpauk
2004-06-08 21:31
2004.06.27
1 секунда


1-1087305759
Maxim
2004-06-15 17:22
2004.06.27
DLL