Тема: АНК: Курсор мыши переместить в центр экрана
Подскажите пожалуйста, как сделать так, чтобы когда курсор мыши упирался в границы экрана он перемещался в центр экрана?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Подскажите пожалуйста, как сделать так, чтобы когда курсор мыши упирался в границы экрана он перемещался в центр экрана?
Действительно, очень непросто
loop
{
CoordMode, Mouse
MouseGetPos, xpos, ypos
if (xpos <= 0) or (xpos >= A_ScreenWidth) or (ypos <= 0) or (ypos >= A_ScreenHeight)
MouseMove, A_ScreenWidth/2, A_ScreenHeight/2
sleep 50
}
Теория хромает:
http://www.autohotkey.com/docs/commands/CoordMode.htm
Но конечно из цикла Coordmode надо вывести.
Как вариант без цикла:
#Persistent
#NoEnv
ListLines Off
SetBatchLines -1
OnExit, Exit
hHookMouse := DllCall("SetWindowsHookEx"
, Int, WH_MOUSE_LL := 14
, Int, RegisterCallback("LowLevelMouseProc", "Fast")
, Ptr, DllCall("GetModuleHandle", UInt, 0, Ptr)
, UInt, 0, Ptr)
Return
Exit:
DllCall("UnhookWindowsHookEx", Ptr, hHookMouse)
ExitApp
LowLevelMouseProc(nCode, wParam, lParam)
{
static x, y
If (wParam = 0x200) ; WM_MOUSEMOVE
{
x := NumGet(lParam + 0, "Int"), y := NumGet(lParam + 4, "Int")
SetTimer, EventHandling, -10
}
Return DllCall("CallNextHookEx", Ptr, 0, Int, nCode, UInt, wParam, UInt, lParam)
EventHandling:
If (x <= 0 || y <= 0 || x >= A_ScreenWidth || y >= A_ScreenHeight)
MouseMove, A_ScreenWidth/2, A_ScreenHeight/2, 0
Return
}
Добрый день!
От твоего файла на виртуальной машине слегла ОС, но я это буду считать чистой воды совпадением, так как много чего вредного на ней тестил - к разговору о мнимых и мнительных.
Что же касается троллинга который ты тут развел, а это именно троллинг.
1. Если ты внимательно ознакомился не только с правилами, но и с сообщениями на этом форуме, то ты должен был увидеть, что здесь не столько хотят получить екзешник (с паролем при том на декомпиляцию), сколько именно код, потому как вопрос задается чаще всего по решению узкой задачи, с дальнейшей её реализацией в чем то более глобальном.
2. На любых форумах связанных с программированием считается дурным тоном выкладывать екзешники без кода.
3. Ненормативная лексика - точно так же дурной тон, даже в интернете. Если вы не в состоянии не использовать его, то и отношение к вам будет соответсвующим.
Вынужден убрать посты с флудом, пожалуй, кроме последнего, т. к. мог бы то же самое сказать от себя. <IvanSan>, вам предупреждение.
На форуме запрещены:
- ругань
- ругательства
- беспредметный разговор или отход от темы обсуждения
- перепалка
<IvanSan> - серьёзное предупреждение за ругань и перепалку
serzh82saratov - китайское предупреждение за переход на личности и перепалку
Всегда считал, что вина за такие проступки лежит всецело на том - кто первый перешёл на личности.
Так и есть:
<IvanSan> первым перешёл на личность в отношении Malcev
serzh82saratov первым перешёл на личность в отношении <IvanSan>
Человек без комплексов на такие вещи обычно просто не обращает внимания.
Ну на перепалку внимание обратили, виновных нашли, и всё за даром.
serzh82saratov, я ничего не говорил про комплексы, а только развеял Ваши сомнения из 10 сообщения.
По поводу этого ответил teadrinker там же в следующем сообщеии.
Как вариант без цикла:
#Persistent #NoEnv ListLines Off SetBatchLines -1 OnExit, Exit hHookMouse := DllCall("SetWindowsHookEx" , Int, WH_MOUSE_LL := 14 , Int, RegisterCallback("LowLevelMouseProc", "Fast") , Ptr, DllCall("GetModuleHandle", UInt, 0, Ptr) , UInt, 0, Ptr) Return Exit: DllCall("UnhookWindowsHookEx", Ptr, hHookMouse) ExitApp LowLevelMouseProc(nCode, wParam, lParam) { static x, y If (wParam = 0x200) ; WM_MOUSEMOVE { x := NumGet(lParam + 0, "Int"), y := NumGet(lParam + 4, "Int") SetTimer, EventHandling, -10 } Return DllCall("CallNextHookEx", Ptr, 0, Int, nCode, UInt, wParam, UInt, lParam) EventHandling: If (x <= 0 || y <= 0 || x >= A_ScreenWidth || y >= A_ScreenHeight) MouseMove, A_ScreenWidth/2, A_ScreenHeight/2, 0 Return }
Спасибо. Работает отлично!
Ну так допустим если Я человека назвал - идиотом, и это факт. То получается на личности Я не переходил?
Иначе всё зависит, кто что считает фактами, и прав тут будет тот, у кого больше прав.
Каша-малаша.
Правильно понимать так: если я (кстати, с маленькой буквы в русском языке) безосновательно назвал человека идиотом и он сильно обиделся - значит у него сильно большие комплексы. Вот в чём факт.
S.shipilov, модераторы не выясняют отношения, а вырабатывают у пользователе иммунитет против "смуты".
Вынужден убрать посты с флудом, желающие могут продолжить дискуссию в личной переписке.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться