Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] MouseMove на центр экрана (для любого разрешения) (http://forum.oszone.net/showthread.php?t=139100)

kagorec 01-05-2009 17:27 1108632

MouseMove на центр экрана (для любого разрешения)
 
Здраствуйте, возник вопрос по позицианированию курсора по середине экрана.
Способ нашёл
задать переменную всоты и ширины экрана делённую на 2
PHP код:

$w = @DesktopWidth 2
$h 
= @DesktopHeight 

Осталось добавить в к самой фнкции mouemove
PHP код:

Func M_centr ()
While (
1)
MouseMove ($w,$h,1) ; здесь пропробовал менять местами w и h
Sleep 
(1000)
WEnd
EndFunc 

Так курсор перемещается на середину почти, не понятно почему немного отклоняется в левую сторону.
Вопрос почему так происходит если код правильно составлен (я так думаю) ?

Rognorek 01-05-2009 18:05 1108655

У курсора есть точка позиционирования (выставляется в редакторе при создании курсора) -- возможно из-за этого. ЗЫ: деление лучше заменить на умножение %)

Creat0R 01-05-2009 19:09 1108686

Цитата:

Цитата 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


kagorec 01-05-2009 19:49 1108712

Цитата:

Цитата Rognorek
У курсора есть точка позиционирования (выставляется в редакторе при создании курсора) -- возможно из-за этого. ЗЫ: деление лучше заменить на умножение %) »

Очень смешно)) какое нафик умножение)) курсор вооще за предел desctopa стремится.
Исправлено, вернее изначально все было правильно, только не учел что берутся данные о разрешении именно виндовса.
Тему можно закрывать )
п.с. Creat0R спасибо, тоже очень хорошее решение!+

Creat0R 01-05-2009 21:56 1108819

Цитата:

Цитата kagorec
какое нафик умножение

Не нужно грубить, можно вежливо ответить что вам решение не подходит :).

Цитата:

Цитата kagorec
Тему можно закрывать )
п.с. Creat0R спасибо, тоже очень хорошее решение!+ »

Цитата:

Внимание! На конференции принято отмечать полезные сообщения отвечающих в теме участников и помечать тему решенной после получения ответа на свой вопрос!
;)


Время: 21:56.

Время: 21:56.
© OSzone.net 2001-2025