我正在尝试在AutoHotKey中创建一个非常基本的文本包装器,以便在编程时使用。我让它使用剪贴板复制所选文本,修改它,然后粘贴它,但我试图避免使用剪贴板,因为它与我的剪贴板管理器不能很好地工作。有谁知道如何做到这一点?
!r:: ;Alt+R+%Char% = Wrap Text with Input Characters
ClipSave := ClipboardAll
Send ^c
Input, Char, L1
if ("" . Char = "{")
{
clipboard = {%clipboard%}
}
else if ("" . Char = "[")
{
clipboard = [%clipboard%]
}
else if ("" . Char = "(")
{
clipboard = (%clipboard%)
}
else
{
clipboard = %Char%%clipboard%%Char%
}
StringReplace, clipboard, clipboard,%A_SPACE%",", All
Send ^v
Clipboard := ClipSave
ClipSave =
return
注意:我已经看到ControlGet, text, Selected
并尝试实现它,但它不起作用(没有错误,只是没有动作)。如果有人有解决方案,这将解决我的问题。
答案 0 :(得分:2)
Credit to Solar on the AutoHotkey forums提出以下解决方案
这种方法有点不可靠,因为它只适用于特定的控件类型。但是,它可能是您正在寻找的解决方案,因为它根本不使用剪贴板。
WinActive("A") ; sets last found window
ControlGetFocus, ctrl
if (RegExMatch(ctrl, "A)Edit\d+")) ; attempt copying without clipboard
ControlGet, text, Selected,, %ctrl%
}
这是一个建议的解决方案,尝试使用ControlSend复制文本,但如果需要,可以使用剪贴板作为备份。
WinActive("A") ; sets last found window
ControlGetFocus, ctrl
if (RegExMatch(ctrl, "A)Edit\d+")) ; attempt copying without clipboard
ControlGet, text, Selected,, %ctrl%
else { ; fallback solution
clipboardOld := Clipboard ; backup clipboard
Send, ^c ; copy selected text to clipboard
if (Clipboard != clipboardOld) {
text := Clipboard ; store selected text
Clipboard := clipboardOld ; restore clipboard contents
}
}
MsgBox % text
答案 1 :(得分:-1)
您的“剪贴板管理器”很可能适用于 ctrl + c 。添加$
选项,因此它不会被 alt + r -hotkey触发,因此不会被干预。
$^c::
....