Это мой первый скрипт AHK, и у меня возникли проблемы с его получением того, что я хочу. Используя комбинацию клавиш Ctrl + Alt + A в Блокноте, я хочу перейти к началу строки текста, выбрать первый символ, скопировать его в буфер обмена и проверить, что это за буква. Прямо сейчас, я просто пытаюсь проверить содержимое буфера обмена с помощью MsgBox
, но есть проблема: MsgBox
отображает его содержимое до команда копирования! Вот сценарий:AutoHotkey отображает MsgBox перед назначением переменной
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
#IfWinActive, ahk_class Notepad
^!a::
Send, {Home}
Send, {LShift Down}{Right}{LShift Up}
Send, ^c
MsgBox, %clipboard%
return
Запуск команды несколько раз, вы увидите, что она копирует выделенный текст после он отображает MsgBox
. Он отображает текст из предыдущей команды. Любые идеи о том, что я могу делать неправильно?
Update: Казалось бы, что маленький кусочек сценария, который я забыл включить в вопрос может быть виновником: SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
Я обновил сценарий выше также. Когда я удаляю эту строку, она работает так, как ожидалось. Может ли кто-нибудь сказать мне, почему?
Я не могу воспроизвести вашу ошибку. Ваш код работает отлично для меня. --- два незначительных намека: горячие клавиши, горячие клавиши и метки всегда должны заканчиваться «возвратом». Добавьте это в самую нижнюю часть вашего кода. --- '#ifWinActive, ahk_class Notepad' запускает начало раздела« Блокнот-только-горячая клавиша ». Возможно, вы захотите закрыть его с помощью '# ifWinActive' в самом низу кода. – Blauhirn
Он также работает для меня. –
Вы можете, однако, добавить 'keyWait, {ctrl}' после 'send^c' или использовать ключевое слово' setkeydelay' – Blauhirn