-
AutoIt
(
http://forum.oszone.net/forumdisplay.php?f=103)
MouseMove на центр экрана (для любого разрешения)
Здраствуйте, возник вопрос по позицианированию курсора по середине экрана.
Способ нашёл
задать переменную всоты и ширины экрана делённую на 2
PHP код:
$w = @DesktopWidth / 2
$h = @DesktopHeight / 2
Осталось добавить в к самой фнкции mouemove
PHP код:
Func M_centr ()
While (1)
MouseMove ($w,$h,1) ; здесь пропробовал менять местами w и h
Sleep (1000)
WEnd
EndFunc
Так курсор перемещается на середину почти, не понятно почему немного отклоняется в левую сторону.
Вопрос почему так происходит если код правильно составлен (я так думаю) ?
|
У курсора есть точка позиционирования (выставляется в редакторе при создании курсора) -- возможно из-за этого. ЗЫ: деление лучше заменить на умножение %)
|
Цитата:
Цитата kagorec
здесь пропробовал менять местами w и h »
|
А в справку заглянуть не пробовали? Зачем гадать, если уже заранее известно где какой параметр нужно ставить.
Цитата:
Цитата kagorec
курсор перемещается на середину почти, не понятно почему немного отклоняется в левую сторону »
|
Как вы это определяете? :) - А даже если оно и так, то можно просто добавить (или убавить) отклоняющиеся координаты...
Код:
$iWidth = @DesktopWidth
$iHeight = @DesktopHeight
$iX = $iWidth / 2
$iY = $iHeight / 2
MouseMove($iX, $iY, 0)
$aMPos = MouseGetPos()
$iMouse_On_Center = ((($iX * 2) = $iWidth) And (($iY * 2) = $iHeight))
$sAsk_Msg = ""
$iAsk_Flag = 64
If Not $iMouse_On_Center Then
$sAsk_Msg = "\n\nMouse is not on center, move the mouse?"
$iAsk_Flag = 52
EndIf
$iAsk = MsgBox($iAsk_Flag, 'Results', _
StringFormat("DesktopWidth: %i\nDesktopHeight: %i\n\nMouse X Pos: %i\nMouse Y Pos: %i\n\nMouse on center: %s%s", _
$iWidth, $iHeight, $aMPos[0], $aMPos[1], $iMouse_On_Center, $sAsk_Msg))
If $iAsk = 6 Then
$iX = $aMPos[0]
$iY = $aMPos[1]
If ($iX * 2) < $iWidth Then
$iX = $iWidth - ($iX * 2)
ElseIf ($iX * 2) > $iWidth Then
$iX = ($iX * 2) - $iWidth
EndIf
If ($iY * 2) < $iHeight Then
$iY = $iHeight - ($iY * 2)
ElseIf ($iY * 2) > $iHeight Then
$iY = ($iY * 2) - $iHeight
EndIf
MouseMove($iX, $iY, 0)
EndIf
|
Цитата:
Цитата Rognorek
У курсора есть точка позиционирования (выставляется в редакторе при создании курсора) -- возможно из-за этого. ЗЫ: деление лучше заменить на умножение %) »
|
Очень смешно)) какое нафик умножение)) курсор вооще за предел desctopa стремится.
Исправлено, вернее изначально все было правильно, только не учел что берутся данные о разрешении именно виндовса.
Тему можно закрывать )
п.с. Creat0R спасибо, тоже очень хорошее решение!+
|
Цитата:
Цитата kagorec
какое нафик умножение
|
Не нужно грубить, можно вежливо ответить что вам решение не подходит :).
Цитата:
Цитата kagorec
Тему можно закрывать )
п.с. Creat0R спасибо, тоже очень хорошее решение!+ »
|
;)
|
Время: 21:56.
© OSzone.net 2001-2025