![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 18.02.2008
Сообщений: 198
|
![]()
Последнее сообщение. Скопировано с темы справедливо закрытой модератором. http://programmersforum.ru/showthread.php?t=21450
С ужасом для себя выяснил что компонент TspeedButton не имеет Handle . Так же как и все компоненты наследники TGraphicControl, в частности, TLabel, TShape, TImage, TBevel и т.д. вот статья http://www.delphikingdom.com/asp/ans...IDAnswer=62488 Получилось нажать на кнопку "мышкой" вот так procedure TForm1.Button2Click(Sender: TObject); var wnd:HWND; r:TRect; prev_pos:TPoint; begin wnd:=Findwindow(nil, 'Заказ запчастей');; // получаем хэндл окна с кнопкой GetWindowRect(wnd,r); // получаем координаты окна. GetCursorPos(prev_pos); // запоминаем положение курсора memo1.Clear; memo1.Lines.Append('X='+inttostr(r. Left)); memo1.Lines.Append('Y='+inttostr(r. Top)); SetCursorPos(r.left+633+20+10,r.top +280+20+10); // устанавливаем курсор над кнопкой Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, r.Left+663, r.Top+300, 0, 0); Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, r.Left+6+3, r.Top+300, 0, 0); SetCursorPos(prev_pos.x,prev_pos.y) ; // возвращаем курсор end; Но это работает если форма программы НЕ свернута и находится В РАМКАХ рабочей зоны экрана. Как сделать клик на кнопке таким же (или другим) способом в СВЕРНУТОМ окне ????? |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 22.06.2007
Сообщений: 414
|
![]()
Развернуть и нажать...
Нет невыполнимых задач, всё дело времени...
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 18.02.2008
Сообщений: 198
|
![]()
Это я уже предположи. Но в душе сидела надежда что можно как то по другому.
SendMessage(Handle,WM_SYSCOMMAND,SC _RESTORE,0); Восстановить окно А какие сообщения отвечают за изменение координать окна? окно.left и окно.top |
![]() |
![]() |
![]() |
#4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
WM_MOVE или WM_MOVING точно не помню.
I'm learning to live...
|
![]() |
![]() |
![]() |
#5 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
![]()
Всё намного проще:
Код:
x, y - клиент-координаты формы в которые попадает кнопка. ------------------ в Дельфи, вместо MAKELPARAM - Код:
|
![]() |
![]() |
![]() |
#6 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Цитата:
I'm learning to live...
|
||
![]() |
![]() |
![]() |
#7 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
![]()
Вот и чудненько
![]() ![]() А тогда, видимо, и вопрос отпадает. Автор изначально собирался "щелкать" по координатам, а speedbutton, видимо, реализована на уровне VCL, никаких её признаков, выходящих за рамки приложения или сообщений мной замечено не было. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Считать значение компонента с чужого окна | chipmunk | Общие вопросы Delphi | 1 | 12.06.2008 11:22 |
закрыть все дочерни окна, кроме главного окна | Worms | Общие вопросы Delphi | 2 | 03.12.2007 22:18 |
Нужно получить все компоненты чужого окна по дескриптору | 3lander | Win Api | 12 | 28.11.2007 20:41 |
Как сделать чтобы дочерние окна в MDI-приложениях были вне главного окна??? | dimonchuk | Общие вопросы Delphi | 1 | 11.08.2007 12:13 |
Перехват и подмена кодов клавиш чужого окна | Hedgehog | Безопасность, Шифрование | 3 | 23.04.2007 16:05 |