Что нового

Исправить код. Зажимается клавиша CTRL

mef-t

Осваивающий
Сообщения
306
Репутация
30
Доброго времени суток.

Пишу небольшую программку по работе с памятью.
Но столкнулся с проблемой, что в некоторых случаях зажимается клавиша CTRL и остается в таком положении.

Под спойлером код программы: его минимальная вырезка чтобы получилось повторить проблему.

Код:
HotKeySet('^`', '_all_convert') ; конвертирование выделенного текста
HotKeySet('{PAUSE}', '_prev_convert') ; конвертирование последнего слова
HotKeySet('{ESC}', '_exit') ; выход из скрипта по ESC

While 1
	Sleep(200)
WEnd

Func _exit()
	Exit
EndFunc

Func _all_convert()
	_bClip(0)
EndFunc

Func _prev_convert()
	_bClip(1)
EndFunc

Func _bClip($type=0)
	ConvertProc($type)
EndFunc

Func ConvertProc($type = 0)
	if $type = 1 Then
		Send("^+{LEFT}")
	EndIf
    Send("^{INS}")
    Local $SelectedText = ClipGet()
    Local $NewClip = 'Текст для вставки'
    ClipPut($NewClip)
    Send("+{Insert}")
EndFunc

Суть в том, что при нажатии сочетания клавиш "ctrl + `" выделенный текст заменяется другим. При нажатии "Break" выделяется последнее слово (сочетание ctrl + <-) и так же заменяется.

На текущем примере ошибку можно воспроизвести очень быстрым нажатием первого и, следом за ним, второй сочетаний клавиш.

Предполагаю, что выполнение функции на каком то этапе обрывается и начинается заново по функции от "Break".

Пытался сразу в начале функций снимать горячие клавиши и возвращать только по завершению. Не помогло.
Пробовал в конце функций отправлять Send("{CTRLUP}"). Результата так же не увидел.

Понимаю, что где-то допускаю грубую банальную ошибку, но найти не могу.
Просьба помочь.
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
mef-t
http://autoit-script.ru/index.php?topic=9619.0
http://autoit-script.ru/index.php?topic=11514.0
http://autoit-script.ru/index.php?topic=7016.0
http://autoit-script.ru/index.php?topic=903.0
 
Верх