Войти

Показать полную графическую версию : [решено] MouseMove на центр экрана (для любого разрешения)


kagorec
01-05-2009, 17:27
Здраствуйте, возник вопрос по позицианированию курсора по середине экрана.
Способ нашёл
задать переменную всоты и ширины экрана делённую на 2
$w = @DesktopWidth / 2
$h = @DesktopHeight / 2

Осталось добавить в к самой фнкции mouemove
Func M_centr ()
While (1)
MouseMove ($w,$h,1) ; здесь пропробовал менять местами w и h
Sleep (1000)
WEnd
EndFunc
Так курсор перемещается на середину почти, не понятно почему немного отклоняется в левую сторону.
Вопрос почему так происходит если код правильно составлен (я так думаю) ?

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

Creat0R
01-05-2009, 19:09
здесь пропробовал менять местами w и h »
А в справку заглянуть не пробовали? Зачем гадать, если уже заранее известно где какой параметр нужно ставить.

курсор перемещается на середину почти, не понятно почему немного отклоняется в левую сторону »
Как вы это определяете? :) - А даже если оно и так, то можно просто добавить (или убавить) отклоняющиеся координаты...

$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
У курсора есть точка позиционирования (выставляется в редакторе при создании курсора) -- возможно из-за этого. ЗЫ: деление лучше заменить на умножение %) »
Очень смешно)) какое нафик умножение)) курсор вооще за предел desctopa стремится.
Исправлено, вернее изначально все было правильно, только не учел что берутся данные о разрешении именно виндовса.
Тему можно закрывать )
п.с. Creat0R спасибо, тоже очень хорошее решение!+

Creat0R
01-05-2009, 21:56
какое нафик умножение
Не нужно грубить, можно вежливо ответить что вам решение не подходит :).

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

Внимание! На конференции принято отмечать полезные сообщения (http://forum.oszone.net/faq.php?faq=vb_board_usage#faq_thanks) отвечающих в теме участников и помечать тему решенной (http://forum.oszone.net/faq.php?faq=vb_board_usage#faq_solved_thread_faq) после получения ответа на свой вопрос!

;)




© OSzone.net 2001-2012