Что нового

Залипание кнопки "CTRL"

asdf8

Скриптер
Сообщения
564
Репутация
152
Если запустить на WinXP sp3 x86 такой скрипт:
Код:
HotKeySet('^=', '_Exit')

While 1
	Sleep(100)
WEnd

Func _Exit()
	Send('')
	Exit
EndFunc

и нажать сочетание клавиш правый "CTPL" и "=", скрипт завершит свою работу, но левый "CTPL" останется зажатым. Насколько понимаю, происходит это из-за того, что не закрывается библиотека user32.dll.
Если такое происходит не только у меня, может попросить разработчиков, чтобы исправили. И еще, может добавить к функциям HotKeySet, Send опциональный параметр $dll, чтобы можно было использовать уже открытый хэндл библиотеки и, соответственно, самому закрыть этот хэндл при выходе из скрипта.
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
asdf8
У меня не остаётся зажатым, так как при нажатии "С" выделенный текст не копируется, а вводится буква "с".
 
Автор
A

asdf8

Скриптер
Сообщения
564
Репутация
152
Re: Залипание кнопки \"CTRL\"

AZJIO [?]
У меня не остаётся зажатым, так как при нажатии "С" выделенный текст не копируется, а вводится буква "с".

У меня в SciTE при прокрутке колеса мыши вместо прокрутки страницы, страница начинает масштабироваться и "С" копирует выделенный текст, и так происходит, пока не нажмёшь левый "CTPL"


Добавлено:
Сообщение автоматически объединено:

Попробовал еще на одном компе, там виндос устанавливался из другого дистрибутива - такая-же фигня.

Zaramot [?]
А ты попробуй добавить:
Send('{CTRLUP}')
перед выходом.
это не помогает.
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
asdf8
Это было всегда?
Может несовместимость с программой?
Это случайно не связанно с работой SciTE?
У меня при работе с Notepad++ большая часть клавиш с Alt, в том числе и запуск скрипта или любого файла (bat, htm) в ассоциированной программе по Alt+F5. Иногда глюка захочешь не выловишь, а иногда достаёт на каждом 5-ом запуске, оставляя Alt зажатым. Долго мучился, но теперь догадываться стал быстро, если операция с горячей клавишей неуспешна, жму Alt и повторяю.
 
Автор
A

asdf8

Скриптер
Сообщения
564
Репутация
152
AZJIO [?]
Это было всегда?
Заметил вчера, ну и давно было похожее с функцией BlockInput, но я уже не помню подробностей.

Это случайно не связанно с работой SciTE?
Точно не связано - все так же происходит при выключенном SciTE (запускал скомпилированный скрипт)
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
AZJIO [?]
У меня не остаётся зажатым, так как при нажатии "С" выделенный текст не копируется, а вводится буква "с".
А как связано с "C"?

У меня кстати тоже не залипает.
Залипает если увеличить паузу в Sleep...
Помогает такая же пауза перед Send в функции _Exit.
 
Автор
A

asdf8

Скриптер
Сообщения
564
Репутация
152
Попробовал еще на одной машине WinXP sp2 x86 - тоже залипает.

CreatoR [?]
Помогает такая же пауза перед Send в функции _Exit.
мне тоже помогло, но, все равно, кажется, что это баг AutoIt.

На версии 3.3.6.1 тоже самое.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Проблема скорее всего не в HotKeySet, а в Send.

Пример вызывающий то же поведение:
Код:
Send("{LCTRL DOWN}")
Send("{LCTRL UP}")


Похожий тикет уже былещё один), Valik не стал это исправлять :(.
 

radioamator

Новичок
Сообщения
4
Репутация
0
Может не в тему. На компьютере запущены скрипты autoit, которые не эмулируют нажатий клавиш. Компьютер включен почти круглосуточно, используется для громоздких расчётов, расчёты производятся в виртуальных машинах VirtualBox в которых запущены скрипты autoit с эмуляцией нажатий клавиш. Иногда залипает "CTRL".
Если залип "CTRL" и я останавливаю виртуальные машины нажатием на "CTRL+P", то "CTRL" разлипает.
 
Автор
A

asdf8

Скриптер
Сообщения
564
Репутация
152
radioamator
лучше поменьше пользоваться функцией Send - ненадежная она, что с точки зрения передачи текста (лучше использовать ControlSetText или хотя бы буфер обмена), что с точки зрения передачи сочетания клавиш (лучше использовать _WinAPI_Keybd_Event из WinAPIEx)
 

iamreg

Новичок
Сообщения
7
Репутация
0
Использование _WinAPI_Keybd_Event из WinAPIEx помогло полностью избавиться от залипаний в приложении автоматизации работы с экранными формами. До этого не помогало ничего, приходилось физически нажимать CTRL для сброса залипания.
 

ORLANGUR-M3

Новичок
Сообщения
15
Репутация
0
Тоже сталкиваюсь с этой проблемой. Иногда появляются залипания клавиш Ctrl и Shift, наиболее часто в тот момент когда происходит эмуляция нажатия кнопки приложения:
Код:
ControlClick($Win,'','TBitBtn2')

Когда замечаю залипание, мне приходится нажимать на каждый Ctrl и Shift чтобы клавиши отлипли.
С эмуляцией мыши - вообще проблемы: программа для которой написан скрипт аварийно завершает свою работу без вывода каких либо предупреждений/ошибок.
 

Lev

Новичок
Сообщения
1
Репутация
0
Стонкнулся с той же проблемой, лечил:
_WinAPI_Keybd_Event(0x11, 2) ; CTRL Up
Пруф: autoitscript-dot-com/forum/topic/157677-send-key-problem
 
Верх