Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] BlockInputEx и MouseClick несколько вопросов

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

Аватара для r35p3ct

Новый участник


Сообщения: 13
Благодарности: 0

Профиль | Отправить PM | Цитировать


В описании к BlockInputEx написано: "2 - Block only mouse", там же в примере
;Here we block only *Mouse* input (without keyboard).
_BlockInputEx(1) В чем подвох?)
Сначала хотел использовать блокирование мышки для того, чтобы во время выполнения случайно не двинуть мышку, но при заблокированной мышке комманда MouseClick тоже не работает. Можно ли как нибудь послать клик в определенную координату и заблокировать мышку?

Отправлено: 22:40, 24-09-2009

 

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


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

Цитата r35p3ct:
В чем подвох? »
Ни в чём, это просто ошибка в примере. Поправлено в последней версии.

Цитата r35p3ct:
Сначала хотел использовать блокирование мышки для того, чтобы во время выполнения случайно не двинуть мышку, но при заблокированной мышке комманда MouseClick тоже не работает. Можно ли как нибудь послать клик в определенную координату и заблокировать мышку? »
Тут есть два варианта решения. Первый это отключение блокировки на момент клика, а второй это изначальная блокировка только движения мышки, ну или всего кроме левого клика:

Код: Выделить весь код
;Here we block *Mouse* input, except the mouse primary click.
_BlockInputEx(2, "{MPDOWN}|{MPUP}")

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 01:29, 25-09-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для r35p3ct

Новый участник


Сообщения: 13
Благодарности: 0

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
_BlockInputEx(2, "{MPDOWN}|{MPUP}")
MouseClick("left",685,122,1,0)
sleep(1000)
_BlockInputEx(0)
Клик не происходит...
Про первый вариант не понял, суть такая, сижу за компьютером работаю, скрипт например должен кликать через определенное время куда нибудь, вот нужно как нибудь не допустить перемещения мышки в момент клика...

Отправлено: 11:06, 25-09-2009 | #3


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


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

Цитата r35p3ct:
Про первый вариант не понял »
Имелось в виду отключение (_BlockInputEx(0)) блокировки на время клика.

Цитата r35p3ct:
суть такая, сижу за компьютером работаю, скрипт например должен кликать через определенное время куда нибудь, вот нужно как нибудь не допустить перемещения мышки в момент клика... »
Ну, это совсем другая задача, тут _BlockInputEx не поможет, не для этих целей он делался.
Для этого лучше использовать обычный BlockInput:

Код: Выделить весь код
BlockInput(1)
MouseClick("Main", 685, 122, 1, 0)
Sleep(1000)
BlockInput(0)

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:49, 25-09-2009 | #4


Аватара для r35p3ct

Новый участник


Сообщения: 13
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 13:15, 25-09-2009 | #5


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата r35p3ct:
Как найти из за чего такое может быть? »
Сложно сказать не видя скрипта. Но если попробовать, то можно сделать такой трюк:

Код: Выделить весь код
#include <Misc.au3>

HotKeySet("!3", "ip")

;....

Func ip()
    ;Ждём пока нажата клавиша Alt
    While _IsPressed(12)
        Sleep(10)
    WEnd

    ;тут содержание функции
EndFunc

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 13:50, 25-09-2009 | #6


Аватара для r35p3ct

Новый участник


Сообщения: 13
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вот что показало вскрытие:
Код: Выделить весь код
;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, 25-09-2009 в 15:54.


Отправлено: 15:42, 25-09-2009 | #7


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


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

Цитата http://www.autoitscript.com/autoit3/docs/functions/HotKeySet.htm:
Remarks
If BlockInput is enabled, the Alt keypress cannot be sent!
видимо оно касается и предварительного нажатия юзером. Поэтому решение из моего последнего поста будет оптимальным.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 16:34, 25-09-2009 | #8


Аватара для r35p3ct

Новый участник


Сообщения: 13
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Код: Выделить весь код
#include <Misc.au3>

HotKeySet("!3", "ip")

Func ip()
alt()
blockinput(1)
;.... функция
blockinput(0)
endfunc

func alt()
    While _IsPressed(12)
        Sleep(10)
    WEnd
endfunc

Отправлено: 17:22, 25-09-2009 | #9


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата r35p3ct:
решением будет либо не использовать в хоткеях alt, либо
перед каждым вызовом blockinput сделать так? »
Так точно.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 18:48, 25-09-2009 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] BlockInputEx и MouseClick несколько вопросов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - [решено] Несколько вопросов о windows 7 7erg Microsoft Windows 7 4 16-11-2009 04:59
[решено] Несколько вопросов по профилям в AD skeletor Microsoft Windows NT/2000/2003 3 17-10-2008 15:21
HDD - [решено] Есть несколько вопросов касательно NCQ 12341234 Накопители (SSD, HDD, USB Flash) 3 15-06-2008 11:31
Разное - [решено] Несколько вопросов по лицензированию. Halfer Лицензирование продуктов Microsoft 6 23-09-2007 18:25
[решено] Несколько вопросов по журналу событий perchinka Microsoft Windows 2000/XP 4 29-04-2007 00:50




 
Переход