|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как недопустить перемещение курсора в определенной области экрана |
|
[решено] Как недопустить перемещение курсора в определенной области экрана
|
Новый участник Сообщения: 7 |
Профиль | Отправить PM | Цитировать Дано:
Чужое окно программы (Допустим программа notepad.exe). Задача: Необходимо чтобы, при перемещении по экрану, курсор не смог попасть внутрь данного окна. (То бишь он как бы упирался в границы окна) Замечание: Это как бы использование функции _MouseTrap() которая ограничивает перемещение курсора мыши по указанным координатам, но только из вне прямоугольника. |
|
Отправлено: 01:55, 15-03-2011 |
Новый участник Сообщения: 24
|
Профиль | Отправить PM | Цитировать 1. Вот попробуйте такой вариант:
#Include <WinAPI.au3> #Include <Array.au3> HotKeySet("{Esc}", "end") $iDesktopHeight = @DesktopHeight $iDesktopWidth = @DesktopWidth $hGui = GUICreate("Наведи на меня", 300, 200,-1, -1) GUISetState() $aWinPosition = WinGetPos($hGui) $tOldXpos = 1 $tOldYpos = 1 While 1 $tPoint = _WinAPI_GetMousePos() $tXpos = DllStructGetData($tPoint, "X") $tYpos = DllStructGetData($tPoint, "Y") If $tXpos > $aWinPosition[0] and $tXpos < ($aWinPosition[0] + $aWinPosition[2]) And $tYpos > $aWinPosition[1] and $tYpos < ($aWinPosition[1] + $aWinPosition[3])Then MouseMove($tOldXpos,$tOldYpos,0) Else $tOldXpos = $tXpos $tOldYpos = $tYpos EndIf WEnd Func end() Exit EndFunc 2. Или вот интерпретация для "чужого окна программы": #Include <WinAPI.au3> #Include <Array.au3> HotKeySet("{Esc}", "end") Local $iDesktopHeight = @DesktopHeight Local $iDesktopWidth = @DesktopWidth Run(@SystemDir & '\calc.exe') WinWait('Калькулятор') Local $aWinPosition = WinGetPos('Калькулятор') Local $tOldXpos = 1 Local $tOldYpos = 1 While 1 $tPoint = _WinAPI_GetMousePos() $tXpos = DllStructGetData($tPoint, "X") $tYpos = DllStructGetData($tPoint, "Y") If $tXpos > $aWinPosition[0] And $tXpos < ($aWinPosition[0] + $aWinPosition[2]) And $tYpos > $aWinPosition[1] And $tYpos < ($aWinPosition[1] + $aWinPosition[3]) Then MouseMove($tOldXpos,$tOldYpos,0) Else $tOldXpos = $tXpos $tOldYpos = $tYpos EndIf WEnd Func end() Exit EndFunc |
Последний раз редактировалось centaurvv, 15-03-2011 в 03:08. Отправлено: 02:47, 15-03-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 7
|
Профиль | Отправить PM | Цитировать Благодарю centaurvv
В сущности то что необходимо. Единственное, что по моему, лишнее, так это _WinAPI_GetMousePos(). MouseGetPos () не плохо справляется со своей задачей. А так еще раз спасибо.. |
Отправлено: 09:32, 15-03-2011 | #3 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - [решено] Как насильно запретить запуск определенной программы (процесса)? | st031 | Microsoft Windows 2000/XP | 4 | 05-06-2009 10:24 | |
Закрепление определенной области в Браузере. | BROTHERHOOD | Хочу все знать | 4 | 31-01-2009 18:56 | |
Интерфейс - [решено] Как отключить автоперемещение курсора на активное окно | SWiTChm | Microsoft Windows 2000/XP | 2 | 16-10-2008 19:38 | |
[решено] Как восстановить в неразмеченной области 8mb? | Seryi 134 | Microsoft Windows 2000/XP | 5 | 15-02-2007 15:49 | |
Delphi - Как в Delphi заставить звуковую карту генерировать звук определенной частоты? | Alexander_Grig | Программирование и базы данных | 12 | 17-05-2005 13:28 |
|