Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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 - это должен быть дискриптор дочернего контрола, а не главного окна.


Наверх

Титульная страница Поиск, карта сайта Написать письмо