Форум: "WinAPI";
Текущий архив: 2003.10.27;
Скачать: [xml.tar.bz2];
ВнизКак получить хэндл child-окна в котором нажата кнопка? Найти похожие ветки
← →
YuraR (2003-08-19 15:02) [0]Здраствуйте!
Есть проблема следующего характера: в child-окне нажимаються клавиши. Некоторые из них мне нужно менять на другие. Как получить хэндл этого child-окна.
Нажимаемые клавиши отлавливаю через хук на KeyDown. Хєндл пытаюсь получить с помощью GetActiveWindow, но возвращается хендл MDI-окна.
Плиз, подскажите куда копать?
← →
Игорь Шевченко (2003-08-19 15:38) [1]GetParent от кнопки ?
← →
ermserg (2003-08-19 16:27) [2]TForm.ActiveMDIChild ne pomozhet?
← →
ermserg (2003-08-19 16:30) [3]ili tak:
lHandle := SendMessage(Self.ClientHandle, WM_MDIGETACTIVE, 0, 0)
← →
YuraR (2003-08-19 16:44) [4]Игорь. GetParent требует HWND, а где его взять для клавиши клавиатуры я не знаю.
Я сдела пока так в функции обработки хука:
h1 := GetActiveWindow;
GetWindowText(h1,t,255);
Form1.ListBox1.Items.Add("MDI - "+t);
repeat
h0:=GetWindow(h1,GW_CHILD);
GetWindowText(h0,t,255);
Form1.ListBox1.Items.Add("Child - "+t);
h1:=h0;
until h0=0;
Но хочеться сделать это без перебора всех child.
← →
Игорь Шевченко (2003-08-19 17:03) [5]Упс! Невнимательно прочитал вопрос, извиняюсь. А в хуке разве нет Handle окна, которому приходит нажатие клавиши ? Что за тип хука устанавливается ?
← →
YuraR (2003-08-20 12:09) [6]Устанавливается следующий хук:
SetWindowsHookEx(WH_JOURNALRECORD,@Proc,HInstance,0)
← →
Игорь Шевченко (2003-08-20 15:05) [7]F1 читать внимательно: lParam указывает на EVENTMSG
typedef struct tagEVENTMSG { // em
UINT message;
UINT paramL;
UINT paramH;
DWORD time;
HWND hwnd; вот оно и окно
} EVENTMSG;
hwnd
Identifies the window to which the message was posted.
← →
YuraR (2003-08-20 17:48) [8]По справке оно-то так, а в программе не работает.
Я использовал для перехвата клавиш код из сообщения на этом форуме "Перехватчик клавиатуры без использования dll".
Но HWND в lParam почему-то нет. Возращается 0 вне зависимости от окна или контрола. Можете попробовать сами.
Поэтому я и задал вопрос на форум.
← →
Игорь Шевченко (2003-08-20 17:51) [9]Я пробовал, но использовал свой код. У меня окно было :) Может, в перехватчике проблема ?
← →
YuraR (2003-08-20 18:25) [10]Я тоже пришел к такому-же выводу.
Этот перехватчик страно и буквы перехватывает: только английские и часть руских ъэюбїєж.
То что я хотел сделать я сделал. Вообщем тему можно закрывать.
Большое спасибо.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.10.27;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.02 c