Программно кликнуть мышкой
От: Lazyman Россия  
Дата: 16.04.09 22:37
Оценка:
Попытался поискать на форуме — в ответ:
Retrieving the COM class factory for component with CLSID {7B0501BE-630B-4A5A-882E-E73B5385024A} failed due to the following error: 80040154.


Так что все-таки задам вопрос.

Приложению надо послать нажатие определенной клавиши, и потом кликнуть мышкой в паре мест.

Посылаю сообщение нажатия клавиши:


SendMessage(intptr1, WM_KEYDOWN, 33, 3242786817);   //послали программе
SendMessage(intptr1, WM_KEYUP, 33, 3242786817);     //нажатие КНОПКИ PageUp


Все посылается прекрасно.. Но вот в определенном месте программно кликнуть мышкой — никак..


SendMessage(intptr1, WM_LBUTTONDOWN, 1, 45875600);
SendMessage(intptr1, WM_LBUTTONUP, 1, 45875600);


Что делаю не так...??

Может у кого примерчик есть, как в стороннем окне тыкать программно мышкой в определенных координатах окна?


17.04.09 12:01: Перенесено модератором из '.NET' — TK
Re: Программно кликнуть мышкой
От: jg  
Дата: 18.04.09 10:39
Оценка:
Посмотри SendInput
Re: Программно кликнуть мышкой
От: carpenter СССР  
Дата: 22.04.09 08:12
Оценка:
Здравствуйте, Lazyman, Вы писали:




L>
L>SendMessage(intptr1, WM_LBUTTONDOWN, 1, 45875600);
L>SendMessage(intptr1, WM_LBUTTONUP, 1, 45875600);
L>


не исключено что ты кидаешь сообщение в поток в котором и находишься , т.е. в этом месте ты уже обрабатываешь какоето
сообщение и обработчик для этого не доступен ... андестенд?
как вариант — попробуй postmessage — сообщение придет когда ты выйдешь из обработчика
Re: Программно кликнуть мышкой
От: Слава Израиль  
Дата: 22.04.09 11:13
Оценка:
Здравствуйте, Lazyman, Вы писали:

L>Попытался поискать на форуме — в ответ:

L>Retrieving the COM class factory for component with CLSID {7B0501BE-630B-4A5A-882E-E73B5385024A} failed due to the following error: 80040154.


L>Так что все-таки задам вопрос.


L>Приложению надо послать нажатие определенной клавиши, и потом кликнуть мышкой в паре мест.


L>Посылаю сообщение нажатия клавиши:



L>
L>SendMessage(intptr1, WM_KEYDOWN, 33, 3242786817);   //послали программе
L>SendMessage(intptr1, WM_KEYUP, 33, 3242786817);     //нажатие КНОПКИ PageUp

L>


L>Все посылается прекрасно.. Но вот в определенном месте программно кликнуть мышкой — никак..



L>
L>SendMessage(intptr1, WM_LBUTTONDOWN, 1, 45875600);
L>SendMessage(intptr1, WM_LBUTTONUP, 1, 45875600);
L>


L>Что делаю не так...??


L>Может у кого примерчик есть, как в стороннем окне тыкать программно мышкой в определенных координатах окна?


Если клики — щелчки надо посылать в чужую програму, то лучше использовать SendInputs или mouse_event / keybd_event
Спасибо за внимание
Re: Программно кликнуть мышкой
От: -prus-  
Дата: 23.04.09 07:14
Оценка:
Здравствуйте, Lazyman, Вы писали:
...
L>Может у кого примерчик есть, как в стороннем окне тыкать программно мышкой в определенных координатах окна?

#define GET_KOORD(x, y) (x|(y<<16))

VOID ClickOnWnd(HWND hWnd) {

    DWORD dwCoord = GET_KOORD(1, 1); // Координаты "кликанья"

    PostMessage(hWnd, WM_LBUTTONDOWN, MK_LBUTTON, LPARAM(dwCoord));
    PostMessage(hWnd, WM_LBUTTONUP, NULL, NULL);

}
С уважением,
Евгений
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.