Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как недопустить перемещение курсора в определенной области экрана

Ответить
Настройки темы
[решено] Как недопустить перемещение курсора в определенной области экрана

Аватара для VladUs

Новый участник


Сообщения: 7
Благодарности: 2

Профиль | Отправить PM | Цитировать


Дано:
Чужое окно программы (Допустим программа notepad.exe).

Задача:
Необходимо чтобы, при перемещении по экрану, курсор не смог попасть внутрь данного окна.
(То бишь он как бы упирался в границы окна)

Замечание:
Это как бы использование функции _MouseTrap() которая ограничивает перемещение курсора мыши по указанным координатам, но только из вне прямоугольника.

Отправлено: 01:55, 15-03-2011

 

Аватара для centaurvv

Новый участник


Сообщения: 24
Благодарности: 3

Профиль | Отправить 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
Для выхода из программы жмем "ESC"


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



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для VladUs

Новый участник


Сообщения: 7
Благодарности: 2

Профиль | Отправить PM | Цитировать


Благодарю centaurvv
В сущности то что необходимо.
Единственное, что по моему, лишнее, так это _WinAPI_GetMousePos(). MouseGetPos () не плохо справляется со своей задачей.
А так еще раз спасибо..

Отправлено: 09:32, 15-03-2011 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Как недопустить перемещение курсора в определенной области экрана

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - [решено] Как насильно запретить запуск определенной программы (процесса)? 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




 
Переход