Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.032 c
1-1087285327
Timon
2004-06-15 11:42
2004.06.27
Уважаемые Мастера помогите в проблеме (GRID DBGRID)...........


8-1081771345
Dimbas
2004-04-12 16:02
2004.06.27
Проверка на наличие кодека


10-1013693872
GenBr
2002-02-14 16:37
2004.06.27
Как узнать имя компьютера?


14-1086406358
VolanD
2004-06-05 07:32
2004.06.27
Два вопроса по информатике.


6-1083656779
VID
2004-05-04 11:46
2004.06.27
Как считать траффик ?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский