![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
API - необходимо произвести LeftClick по Buttonу др. приложения [D6, Win2k]
EndDie © (2002-12-10 09:41:00)Доброго времени суток!
Проблема:
есть приложение нужно им управлять.
Что есть:есть хэндл главного окна, а также хэндлы иRect: TRectвсех его дочек.
Вопрос:(wnd: HWND)
PostMessage(wnd,WM_LBUTTONDOWN,0,MakeLong(rect.Left+3,rect.Top+3));
PostMessage(wnd,WM_SETCURSOR,wnd1,MakeLong(HTCLIENT,WM_LBUTTONDOWN));
PostMessage(wnd,WM_LBUTTONUP,0,MakeLong(rect.Left+3,rect.Top+3));
Почему это не работает???
Подскажите плиз как правильно!
Заранее благодарен.
EndDie (2002-12-19 09:46:00) [1]Спасибо, reonid, all.
Rouse_ (2002-12-11 03:49:00) [2]Имеется ввиду именно в контексте текущего топика
Желаю успехов
Rouse_ (2002-12-11 03:47:00) [3]Дополню, все же лучше делать SendMessage IMHO (хотя это на результат не влияет, скорее на скорость)
Желаю упехов
Almaz (2002-12-11 02:46:00) [4]
> EndDie (10.12.02 09:41)
> Вопрос: (wnd: HWND)
> PostMessage(wnd,WM_LBUTTONDOWN,0,MakeLong(rect.Left+3,rect.Top+3));
> PostMessage(wnd,WM_SETCURSOR,wnd1,MakeLong(HTCLIENT,WM_LBUTTONDOWN));
> PostMessage(wnd,WM_LBUTTONUP,0,MakeLong(rect.Left+3,rect.Top+3));
> Почему это не работает???
Если вы внимательно посмотрите, что написано в help"е про сообщение WM_LBUTTONDOWN, то непременно заметите, что XPos и YPos, передаваемые в сообщении, это координаты курсора относительно левого верхнего угла клиентской области окна, которому передается сообщение, т.е. относительно дочки.
Т.е. правильно будет, как уже заметил reonid, делать так:
PostMessage(wnd,WM_LBUTTONDOWN,0,MakeLong(3, 3));
PostMessage(wnd,WM_LBUTTONUP,0,MakeLong(3, 3));
Удачи.
Song (2002-12-10 13:47:00) [5]Может просто BM_CLICK и не мучатся?
reonid (2002-12-10 13:00:00) [6]EndDie (10.12.02 09:41)
Rectы дочек в каких координатах? - главного окна? -
попробуй вместо rect.Left+3,rect.Top+3 просто 3, 3 и т.д.
EndDie (2002-12-10 12:20:00) [7]мде
хэндл естественно дочки, поэтому и спрашиваю, что вроде все верно (теоретически по крайней мере), а не получается...
Song (2002-12-10 09:46:00) [8]Потому что wnd - это должен быть дискриптор дочернего контрола, а не главного окна.