mef-t
Осваивающий
- Сообщения
- 306
- Репутация
- 30
Доброго времени суток.
Пишу небольшую программку по работе с памятью.
Но столкнулся с проблемой, что в некоторых случаях зажимается клавиша CTRL и остается в таком положении.
Под спойлером код программы: его минимальная вырезка чтобы получилось повторить проблему.
Суть в том, что при нажатии сочетания клавиш "ctrl + `" выделенный текст заменяется другим. При нажатии "Break" выделяется последнее слово (сочетание ctrl + <-) и так же заменяется.
На текущем примере ошибку можно воспроизвести очень быстрым нажатием первого и, следом за ним, второй сочетаний клавиш.
Предполагаю, что выполнение функции на каком то этапе обрывается и начинается заново по функции от "Break".
Пытался сразу в начале функций снимать горячие клавиши и возвращать только по завершению. Не помогло.
Пробовал в конце функций отправлять Send("{CTRLUP}"). Результата так же не увидел.
Понимаю, что где-то допускаю грубую банальную ошибку, но найти не могу.
Просьба помочь.
Пишу небольшую программку по работе с памятью.
Но столкнулся с проблемой, что в некоторых случаях зажимается клавиша 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}"). Результата так же не увидел.
Понимаю, что где-то допускаю грубую банальную ошибку, но найти не могу.
Просьба помочь.