![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Handle активного окна [D7, XP]
SerJaNT © (2006-08-18 03:22:00)Как узнать handle активного (чужого) окна?
Джо (2006-08-18 04:30:00) [1]1. Clipboard не использовать, дурной тон.
2. Перед появлением popup-menu (сразу же, как только пришло сообщение о клике на иконке в notification area), ты должен сделать:
а)Input1 := GetCurrentThreadId;
b)Input2 := GetWindowThreadProcessId(ForegroundWindow, nil);
c)AttachThreadInput(Input1, Input2, True);
d) ПовторитьPostMessage(GetFocus, WM_CHAR, Char, 0)для каждого символа текста.
e) ПроизвестиAttachThreadInput(Input1, Input2, False).
Кажется, в таком духе, если я ничего не напутал (пишу по памяти).
SerJaNT (2006-08-18 04:11:00) [2]Сорри, забыл удалить старый ник Alert2006
Джо (2006-08-18 04:10:00) [3]GetForegroundWindow
Alert2006 (2006-08-18 04:10:00) [4]Я понял как поределять handle активного окна, надо через GetForegroundWindow.
Но проблема вот какая: сидит программа в трее в которой зарегистрированна глобальная горячая клавиша, например, VK_F1.
По нажатию на F1 в правом верхнем углу появляется popupmenu - popumenu.popup(0,0). И нужно по щелчку на одном из элементов этого меню вставить текст в поле ввода текста активного окна.
Делаю так:
на событии OnClick выбранного MenuItem.
// предпологается, что текст уже скопирован в буфер
SendMessage(GetForegroundWindow, WM_PASTE, 0, 0);
Но проблема в том что когда я кликну по определенному MenuItem фокус активного окна пропадает и соответственно данные с буфера не вставляются. Так вот вопрос: как вставить текст при щелчке по MenuItem в поле ввода активного окна?
SerJaNT (2006-08-18 04:10:00) [5]Я понял как поределять handle активного окна, надо через GetForegroundWindow.
Но проблема вот какая: сидит программа в трее в которой зарегистрированна глобальная горячая клавиша, например, VK_F1.
По нажатию на F1 в правом верхнем углу появляется popupmenu - popumenu.popup(0,0). И нужно по щелчку на одном из элементов этого меню вставить текст в поле ввода текста активного окна.
Делаю так:
на событии OnClick выбранного MenuItem.
// предпологается, что текст уже скопирован в буфер
SendMessage(GetForegroundWindow, WM_PASTE, 0, 0);
Но проблема в том что когда я кликну по определенному MenuItem фокус активного окна пропадает и соответственно данные с буфера не вставляются. Так вот вопрос: как вставить текст при щелчке по MenuItem в поле ввода активного окна?