Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
14-89466
real_qwerty
2003-10-07 12:42
2003.10.27
Изменение ресурсов


1-89304
AntiFriz
2003-10-11 17:19
2003.10.27
Paint:


1-89213
WondeRu
2003-10-14 08:40
2003.10.27
SECURITY_ATTRIBUTES


8-89403
Intell
2003-05-02 14:56
2003.10.27
Запись в TMediaPlayer.


7-89587
Borealis
2003-08-14 22:06
2003.10.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
Английский Французский Немецкий Итальянский Португальский Русский Испанский