[решено] BlockInputEx и MouseClick несколько вопросов

Аватара пользователя
r35p3ct

[решено] BlockInputEx и MouseClick несколько вопросов

Сообщение r35p3ct »

В описании к BlockInputEx написано: "2 - Block only mouse", там же в примере

;Here we block only *Mouse* input (without keyboard).

_BlockInputEx(1) В чем подвох?)

Сначала хотел использовать блокирование мышки для того, чтобы во время выполнения случайно не двинуть мышку, но при заблокированной мышке комманда MouseClick тоже не работает. Можно ли как нибудь послать клик в определенную координату и заблокировать мышку?
Аватара пользователя
Diamond

Re: [решено] BlockInputEx и MouseClick несколько вопросов

Сообщение Diamond »

Для тех кто не вкурсе, речь про самопальную функцию
BlockInputEx
.




Цитата r35p3ct:



В чем подвох?
[решено] BlockInputEx и MouseClick несколько вопросов




Ни в чём, это просто ошибка в примере. Поправлено в последней версии.




Цитата r35p3ct:



Сначала хотел использовать блокирование мышки для того, чтобы во время выполнения случайно не двинуть мышку, но при заблокированной мышке комманда MouseClick тоже не работает. Можно ли как нибудь послать клик в определенную координату и заблокировать мышку?
[решено] BlockInputEx и MouseClick несколько вопросов




Тут есть два варианта решения. Первый это отключение блокировки на момент клика, а второй это изначальная блокировка только движения мышки, ну или всего кроме левого клика:





Код:

Код: Выделить всё

;Here we block *Mouse* input, except the mouse primary click.
_BlockInputEx(2, "{MPDOWN}|{MPUP}")
Аватара пользователя
r35p3ct

Re: [решено] BlockInputEx и MouseClick несколько вопросов

Сообщение r35p3ct »

Код:

Код: Выделить всё

_BlockInputEx(2, "{MPDOWN}|{MPUP}")
MouseClick("left",685,122,1,0)
sleep(1000)
_BlockInputEx(0)

Клик не происходит...

Про первый вариант не понял, суть такая, сижу за компьютером работаю, скрипт например должен кликать через определенное время куда нибудь, вот нужно как нибудь не допустить перемещения мышки в момент клика...
Аватара пользователя
Creat0R

Re: [решено] BlockInputEx и MouseClick несколько вопросов

Сообщение Creat0R »

Цитата r35p3ct:



Клик не происходит
[решено] BlockInputEx и MouseClick несколько вопросов




И не должен. Тут ведь функция пытается подвинуть мышку, а её движение блокируется.




Цитата r35p3ct:



Про первый вариант не понял
[решено] BlockInputEx и MouseClick несколько вопросов




Имелось в виду отключение (_BlockInputEx(0)) блокировки на время клика.




Цитата r35p3ct:



суть такая, сижу за компьютером работаю, скрипт например должен кликать через определенное время куда нибудь, вот нужно как нибудь не допустить перемещения мышки в момент клика...
[решено] BlockInputEx и MouseClick несколько вопросов




Ну, это совсем другая задача, тут _BlockInputEx не поможет, не для этих целей он делался.

Для этого лучше использовать обычный BlockInput:





Код:

Код: Выделить всё

BlockInput(1)
MouseClick("Main", 685, 122, 1, 0)
Sleep(1000)
BlockInput(0)
Аватара пользователя
Creat0R

Re: [решено] BlockInputEx и MouseClick несколько вопросов

Сообщение Creat0R »

Creat0R, отлично, работает. Только вот не пойму почему происходит такой глюк, поэтому то и думал, что функция глючная с начала и не юзал. Вобщем после выполнения этого кода в моей проге мышка начинает норм шевелиться, но при нажатии например на клаве цифры 3, выполняется мой HotKeySet("!3", "ip"), даже когда программа выключена, тоесть получается как будто залипла клавиша alt...если выполнять этот код отдельным проектом, то норм. При нажатии ctrl+alt+del все нормализуется.

Как найти из за чего такое может быть? {ALTDOWN} или чего то похожего не использую...да и выполнял этот код как отдельную функцию...
Аватара пользователя
r35p3ct

Re: [решено] BlockInputEx и MouseClick несколько вопросов

Сообщение r35p3ct »

Цитата r35p3ct:



Как найти из за чего такое может быть?
[решено] BlockInputEx и MouseClick несколько вопросов




Сложно сказать не видя скрипта. Но если попробовать, то можно сделать такой трюк:





Код:

Код: Выделить всё

#include 
HotKeySet("!3", "ip")
;....
Func ip()
    ;Ждём пока нажата клавиша Alt
    While _IsPressed(12)
        Sleep(10)
    WEnd
    ;тут содержание функции
EndFunc
Аватара пользователя
Creat0R

Re: [решено] BlockInputEx и MouseClick несколько вопросов

Сообщение Creat0R »

Вот что показало вскрытие:



Код:

Код: Выделить всё

;HotKeySet("{F9}", "a")
HotKeySet("!0", "a")
While 1
    Sleep(100)
WEnd
func a()
BlockInput(1)
sleep(2000)
MouseClick("Main", 685, 122, 1, 0)
Sleep(2000)
BlockInput(0)
EndFunc

По первому хоткею работает нормально, по второму не очень, пришлось ребутать ПК, клавиши ctrl и alt получается зажаты и не функционируют...

Что делать в принципе понятно) Получается BlockInput глючит?
Аватара пользователя
r35p3ct

Re: [решено] BlockInputEx и MouseClick несколько вопросов

Сообщение r35p3ct »

Цитата r35p3ct:



Получается BlockInput глючит?
[решено] BlockInputEx и MouseClick несколько вопросов




Нет. Получается что после вызова функции, модифицирующие клавиши (в нашем случае это Alt) не успевают отжиматься до того как BlockInput вступает в силу. В справке ведь написано:




Цитата
http://www.autoitscript.com/autoit3/doc ... KeySet.htm
:



Remarks

If BlockInput is enabled, the Alt keypress cannot be sent!



видимо оно касается и предварительного нажатия юзером. Поэтому решение из моего последнего поста будет оптимальным.
Аватара пользователя
Creat0R

Re: [решено] BlockInputEx и MouseClick несколько вопросов

Сообщение Creat0R »

Если я правильно понял, то решением будет либо не использовать в хоткеях alt, либо

перед каждым вызовом blockinput сделать так?





Код:

Код: Выделить всё

#include 
HotKeySet("!3", "ip")
Func ip()
alt()
blockinput(1)
;.... функция
blockinput(0)
endfunc
func alt()
    While _IsPressed(12)
        Sleep(10)
    WEnd
endfunc
Аватара пользователя
r35p3ct

Re: [решено] BlockInputEx и MouseClick несколько вопросов

Сообщение r35p3ct »

Цитата r35p3ct:



решением будет либо не использовать в хоткеях alt, либо

перед каждым вызовом blockinput сделать так?
[решено] BlockInputEx и MouseClick несколько вопросов




Так точно.
Ответить

Вернуться в «AutoIt»