Форум: "Начинающим";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];
ВнизHandle активного окна Найти похожие ветки
← →
SerJaNT © (2006-08-18 03:22) [0]Как узнать handle активного (чужого) окна?
← →
Джо © (2006-08-18 04:10) [1]GetForegroundWindow
← →
Alert2006 (2006-08-18 04:10) [2]Я понял как поределять 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) [3]Я понял как поределять 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:11) [4]Сорри, забыл удалить старый ник Alert2006
← →
Джо © (2006-08-18 04:30) [5]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)
.
Кажется, в таком духе, если я ничего не напутал (пишу по памяти).
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.129 c