Что нового

Залипание CTRL при вызове BlockInput()

ildary

Новичок
Сообщения
49
Репутация
0
Уважаемые специалисты, подскажите пожалуйста, как можно можно решить следующую проблему:

Я написал скрипт, который при запуске прячется в трей и раз в полчаса выполняет следующее:
1) BlockInput( 1 )
2) Активизирует окно программы клиент-банка и передает туда несколько нажатий клавиш
3) BlockInput( 0 )

проблема состоит в том, что если перед выполнением пункта 1) я что-то набирал с зажиманием CTRL или SHIFT, то по окончании пункта 3) - эти клавиши остаются залипшими и работать становится невозможно, не помогают ни выгрузка проводника, ни завершение сеанса пользователя, только полная перезагрузка.

WinXP SP3, autoit 3.3.6.1
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
http://www.autoitscript.com/wiki/FAQ#Why_does_the_Ctrl_key_get_stuck_down_after_I_run_my_script.3F
 
Автор
I

ildary

Новичок
Сообщения
49
Репутация
0
Большое спасибо за ответ!
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Не отжимаются клавиши Shift и Ctrl
Yashied сказал(а):
Код:
DllCall('user32.dll', 'int', 'keybd_event', 'int', 0x10, 'int', 0x02, 'int', 0, 'ptr', 0) ; SHIFT UP
DllCall('user32.dll', 'int', 'keybd_event', 'int', 0x11, 'int', 0x02, 'int', 0, 'ptr', 0) ; CTRL UP
DllCall('user32.dll', 'int', 'keybd_event', 'int', 0x12, 'int', 0x02, 'int', 0, 'ptr', 0) ; ALT UP

Yashied сказал(а):
Код:
DllCall('user32.dll', 'int', 'keybd_event', 'int', 0xA0, 'int', 0x02, 'int', 0, 'ptr', 0) ; LSHIFT UP
DllCall('user32.dll', 'int', 'keybd_event', 'int', 0xA2, 'int', 0x02, 'int', 0, 'ptr', 0) ; LCTRL UP
 
Автор
I

ildary

Новичок
Сообщения
49
Репутация
0
Вызов DllCall() не помог, сделал примерно так:

Код:
WinActivate ( $MainWinTitle )
	
	While _IsPressed( "10" ) Or _IsPressed( "11" ) Or _IsPressed( "12" )

		ControlSend( "",  "", "", "text", 0 ) ;очистка клавиш

	WEnd

	BlockInput( 1 )
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
ildary,
Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.
 
Верх