![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Найди дескриптор кнопки. [D7, XP]
Псарь © (2011-12-20 08:55:00)Всем привет!
Есть сторонняя программа.
Цель нажать на одну единственную кнопку в этой программе.
Что знаю:
(Узнал через WindowFromPoint)
1) Программа написана на Delphi.
2) Знаю класс главной формы программы, его title.
3) Кнопка находится на TCoolBar'e.
4) На кнопке написано "Старт".
Странности:
1) Не могу определить класс, title этой кнопки. (GetClassName, GetWindowText + WindowFromPoint).
Как обнаружить хэндл этой злосчастной кнопки?
Псарь (2011-12-20 10:07:00) [21]
> KilkennyCat © (20.12.11 09:57) [4]
>
> горячий клавиш не привязан случайно к требуемой кнопке?
> решение очевидное, конечно, но вдруг проморгал.
>
Не, нету.
- - -
Ну вроде разобрался. Точно графические.
Осталось сделать эмуляцию клика в нужной точке экрана.
Написал такое:
procedure EmulClick(X, Y: LongInt);
begin
mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, X, Y, 0, 0);
mouse_event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
end;
Работает, если навести курсор на нужную кнопку, т.е. параметры "Х" и "Y" - игнорируются.
В чем ошибка?
KilkennyCat (2011-12-20 09:57:00) [22]горячий клавиш не привязан случайно к требуемой кнопке? решение очевидное, конечно, но вдруг проморгал.
MBo (2011-12-20 09:02:00) [23]Например, TSpeedButton - неоконный контрол
Псарь (2011-12-20 09:01:00) [24]Сказывается мне, что эти кнопки без хэндлов, т.е. графические.
Предположительно TSpeedButton'ы.
Псарь (2011-12-20 08:59:00) [25]И ещё:
На TCoolBar'e находятся 3 кнопки:
"Старт" (Вот она мне и нужна), "Пауза", "Стоп".
Причем WindowFromPoint возвращается один и тот же хэндл (Одно число) для всех этих кнопок и этого TCoolBar'а.