Форум: "WinAPI";
Текущий архив: 2004.06.27;
Скачать: [xml.tar.bz2];
ВнизНужно в хуке получить 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 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.06.27;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.037 c