...
CPoint pt(0,0);
SetCursorPos(pt.x,pt.y);
OnLButtonDown(NULL,pt);
...
Имитация щелчка мыши
Как можно программно управлять курсором мыши? Перетащить его, например, в определённое место экрана и выполнить клик?
This function moves the cursor to the specified screen coordinates...
Смотри дальше в MSDN.
А щелчок?
В MSDN смотрел, видел фигу :)
Цитата: mathers
Пасиба.
А щелчок?
В MSDN смотрел, видел фигу :)
А щелчок?
В MSDN смотрел, видел фигу :)
1.Добавь в класс главного окна ф-ию OnLButtonDown(UINT nFlags, CPoint point); в ней напиши что_нибудь , например AfxMessageBox("Ахтунг!");
2.В обработчике кнопки или пункта меню напиши
Код:
Курсор переместиться в точку pt,с координатами 0,0 и произийдет имитация нажатия левой кнопки мыши,т.е. выведется MessageBox.
Нет, мне надо чтобы не на своём окне, а вообще в любом месте экрана.
Цитата: mathers
Нет, мне надо чтобы не на своём окне, а вообще в любом месте экрана.
Так курсор и переместиться в ту точку экрана которую ты задашь.
0,0 - левый верхний угол экрана.
Тобишь сий код только отловит нажатие, если пользователь его сделает сам.
Или я что то не понимаю?
Цитата: mathers
OnLButtonDown() активируется же ПОСЛЕ того, как клик происходит.
Тобишь сий код только отловит нажатие, если пользователь его сделает сам.
Или я что то не понимаю?
Тобишь сий код только отловит нажатие, если пользователь его сделает сам.
Или я что то не понимаю?
Не...:) Тут клик вообще не происходит - это имитация,ты ж не кликаешь по окну левой кнопкой мыши,ты жмешь на какую то кнопку или выбираешь пункт меню.
Ну вот как пример - автоматизация установки программы какой либо (не моей), чтобы все щелчки по кнопкам сами выполнялись.
LRESULT SendMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
или
BOOL PostMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
http://msdn2.microsoft.com/en-us/library/ms644950.aspx
тип сообщения - вроде WM_LBUTTONCLICK или вроде того
Я так понимаю без обращения к конкретному окну нельзя это сделать?
потому что очередь сообщений должна знать кому мессагу отдать.