Что нового

[Мышь, клавиатура] Блокировка мышки во время MouseMove()

maddoc

Новичок
Сообщения
48
Репутация
2
Возможно ли отобрать у пользователя право руководить мышкой, во время MouseMove ?
Из примеров блокировки мышки, которые есть на форуме (моус хука) сделать что либо подобное не вышло, мышка перестает двигатца )
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
maddoc
справка -> BlockInput
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Код:
While 1
$pos = MouseGetPos() ; получить текущие координыты указателя мыши
Call("MouseIce")
WEnd

Func MouseIce()
    While 1
    MouseMove($pos[0], $pos[1], 1) ; устанавливать всегда указатель по этим координатам    
    WEnd
EndFunc

Аккуратно! Мышь (курсор) замрет замертво. Снимать задачу из диспетчера клавиатурой (Up, Down, Tab, Backspace)
 

FlatX007

Tattoo!
Сообщения
197
Репутация
35
Yuriy - ты гениально придумал, а теперь запусти и посмотри нагрузку на процессор!

Задача снимается из открытого окна SciTE комбинацией клавиш : Ctrl + Pause Break
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Ну просто убрал задержки.
Так, с задержками у меня 1% грузит проц.
Код:
While 1
	Sleep(100)
	$pos = MouseGetPos() ; получить текущие координыты указателя мыши
	Call("MouseIce")
WEnd

Func MouseIce()
	While 1
	Sleep(10)	
	MouseMove($pos[0], $pos[1], 1) ; устанавливать всегда указатель по этим координатам    
	WEnd
EndFunc
 

FlatX007

Tattoo!
Сообщения
197
Репутация
35
Мышь не стоит на месте это раз, а два - то, что проц всё равно сильно грузит!! (30%)
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
У меня в первом варианте загрузка ЦП 50% была (проц 2 ядра).
Во втором - 0-3%
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Yuriy
не плохо бы предусмотреть в скрипте выход из него.
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
не плохо бы предусмотреть в скрипте выход из него
Код:
HotKeySet("{ESC}", "Terminate") ; выход из программы по ESC
While 1
	Sleep(100)
	$pos = MouseGetPos() ; получить текущие координаты указателя мыши
	Call("MouseIce")
WEnd

Func Terminate()
    Exit 0
EndFunc

Func MouseIce()
	While 1		
	MouseMove($pos[0], $pos[1], 1) ; устанавливать всегда указатель по этим координатам    
	WEnd
EndFunc
 

FlatX007

Tattoo!
Сообщения
197
Репутация
35
Всё равно фигня, мышь двигается и очень много.

мышь - 2000dpi
 

Arei

Скриптер
Сообщения
938
Репутация
115
скажите пожалуйста, а как можно во время работы скрипта, что бы не работало средняя кнопка(листать страницы) такое можно сделать
 

Tyr

Новичок
Сообщения
43
Репутация
4
Yuriy сказал(а):
не плохо бы предусмотреть в скрипте выход из него
Код:
HotKeySet("{ESC}", "Terminate") ; выход из программы по ESC
While 1
	Sleep(100)
	$pos = MouseGetPos() ; получить текущие координаты указателя мыши
	Call("MouseIce")
WEnd

Func Terminate()
    Exit 0
EndFunc

Func MouseIce()
	While 1		
	MouseMove($pos[0], $pos[1], 1) ; устанавливать всегда указатель по этим координатам    
	WEnd
EndFunc

Была аналогичная задача:
1. $pos[0] и $pos[1] для удобства лучше передать в переменные
2. MouseMove($coordX, $coordY, 0) - зачем скорость перемещения делать "1". Мышка должна в эти координаты сразу попадать
3. MouseGetPos нужно использовать за циклом... если каждый раз определять заново координаты мыши, то за милисикунды её легко сдвинуть, а так даже при сдвиге - она вернётся к замороженным координатам.
 
Верх