Добрый день! Управляю курсором мыши следующим образом (нашёл на просторах интернета): [vba]
Код
'Подключение функции API Windows "mouse_event" из Виндосовской библиотеки "user32", которая позваляет управлять мышью Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal dwData As Long, ByVal dwExtraInfo As Long) 'Значения параметра dwFlags, определяющие поведение функции mouse_event Private Const MouseEvDown = &H2 'Нажать левую кнопку Private Const MouseEvUp = &H4 'Отпустить левую кнопку 'Подключение функции API Windows "SetCursorPos", которая устанавливает позицию курсора мыши по координатам, соответствующим разрешению вашего монитора Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long 'Подключение фукнции API Windows "GetCursorPos",которая позволяет отслеживать положение курсора мыши по координатам экрана монитора (для проверки координат) Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTTYPE) As Long 'Подключение функции API Windows "Sleep", её можно использовать вместо таймера, выставляя задержки в милисекундах Private Declare Sub Sleep Lib "kernel32" (ByVal milliseconds As Long)
Sub MouseClick(x, y) 'Клик мыши по координатам (x,y) Call SetCursorPos(x, y) mouse_event MouseEvDown, 0, 0, 0, 0 mouse_event MouseEvUp, 0, 0, 0, 0 End Sub
[/vba] Но я так понял, что при запуске внешней программы в полноэкранном режиме данная процедура не станет работать (наверное потому что в другом приложении нету API или ещё по каким-либо многим причинам). Куда копать, что почитать можно на данную тему? ато я пока ниче найти конкретное не могу...
Добрый день! Управляю курсором мыши следующим образом (нашёл на просторах интернета): [vba]
Код
'Подключение функции API Windows "mouse_event" из Виндосовской библиотеки "user32", которая позваляет управлять мышью Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal dwData As Long, ByVal dwExtraInfo As Long) 'Значения параметра dwFlags, определяющие поведение функции mouse_event Private Const MouseEvDown = &H2 'Нажать левую кнопку Private Const MouseEvUp = &H4 'Отпустить левую кнопку 'Подключение функции API Windows "SetCursorPos", которая устанавливает позицию курсора мыши по координатам, соответствующим разрешению вашего монитора Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long 'Подключение фукнции API Windows "GetCursorPos",которая позволяет отслеживать положение курсора мыши по координатам экрана монитора (для проверки координат) Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTTYPE) As Long 'Подключение функции API Windows "Sleep", её можно использовать вместо таймера, выставляя задержки в милисекундах Private Declare Sub Sleep Lib "kernel32" (ByVal milliseconds As Long)
Sub MouseClick(x, y) 'Клик мыши по координатам (x,y) Call SetCursorPos(x, y) mouse_event MouseEvDown, 0, 0, 0, 0 mouse_event MouseEvUp, 0, 0, 0, 0 End Sub
[/vba] Но я так понял, что при запуске внешней программы в полноэкранном режиме данная процедура не станет работать (наверное потому что в другом приложении нету API или ещё по каким-либо многим причинам). Куда копать, что почитать можно на данную тему? ато я пока ниче найти конкретное не могу...Roman777
SLAVICK, Спасибо большое за информацию. Надо изучать...) Всё же на первый взгляд, в данной статье описываются элементы управления, которые относятся к Windows и его объектам. Пока не очень понятно, как можно отыскать окна или объекты другого (внешнего) приложения (особенно, когда оно запущено не в оконном режиме).
SLAVICK, Спасибо большое за информацию. Надо изучать...) Всё же на первый взгляд, в данной статье описываются элементы управления, которые относятся к Windows и его объектам. Пока не очень понятно, как можно отыскать окна или объекты другого (внешнего) приложения (особенно, когда оно запущено не в оконном режиме).Roman777
[/vba] таким способом можно управлять практически любым приложением, только нужно знать параметры запуска и управления, если они есть - или дальше управлять через SendKeys, если не знаете параметров
Roman777, каким приложением Вы хотите управлять? Посмотрите здесь есть примеры запуска блокнота, калькулятора, акробата: [vba]
[/vba] таким способом можно управлять практически любым приложением, только нужно знать параметры запуска и управления, если они есть - или дальше управлять через SendKeys, если не знаете параметров SLAVICK
Иногда все проще чем кажется с первого взгляда.
Сообщение отредактировал SLAVICK - Четверг, 15.10.2015, 09:17