我对使用 3 个不同热键可访问的多个剪贴板感兴趣。
(理想情况下,(control+1)、control+2、control+3 用于复制,alt+1、alt+2 和 alt+3 用于粘贴。
首先我尝试使用以下代码来使用 autohotkey:
#Persistent
; Hotkeys
^F1::Copy(1)
^+F1::Paste(1)
^F2::Copy(2)
^+F2::Paste(2)
^F3::Copy(3)
^+F3::Paste(3)
Copy(clipboardID)
{
global ; All variables are global by default
local oldClipboard := ClipboardAll ; Save the (real) clipboard
Clipboard = ; Erase the clipboard first, or else ClipWait does nothing
Send ^c
ClipWait, 2, 1 ; Wait 1s until the clipboard contains any kind of data
if ErrorLevel
{
Clipboard := oldClipboard ; Restore old (real) clipboard
return
}
ClipboardData%clipboardID% := ClipboardAll
Clipboard := oldClipboard ; Restore old (real) clipboard
}
Cut(clipboardID)
{
global ; All variables are global by default
local oldClipboard := ClipboardAll ; Save the (real) clipboard
Clipboard = ; Erase the clipboard first, or else ClipWait does nothing
Send ^x
ClipWait, 2, 1 ; Wait 1s until the clipboard contains any kind of data
if ErrorLevel
{
Clipboard := oldClipboard ; Restore old (real) clipboard
return
}
ClipboardData%clipboardID% := ClipboardAll
Clipboard := oldClipboard ; Restore old (real) clipboard
}
Paste(clipboardID)
{
global
local oldClipboard := ClipboardAll ; Save the (real) clipboard
Clipboard := ClipboardData%clipboardID%
Send ^v
Clipboard := oldClipboard ; Restore old (real) clipboard
oldClipboard =
}
我使用这些热键是因为,就像这个人提到的,只有少数可能的热键组合不被其他程序采用。
但它总是出问题。它总是忘记我保存的新内容,并不断插入通过常规剪贴板命令“control+c”保存的内容。
有什么想法可以解决这个问题吗?我还尝试使用“ditto”,但未能让它真正注册多个剪贴板的键...
答案1
如果程序以管理员权限运行,AHK 将不会拦截按键,这可能是问题背后的原因。
如果是这种情况,请尝试通过将其添加到自动执行部分(脚本顶部)以管理员身份运行 AHK 脚本:
; If the script is not elevated, relaunch as administrator and kill current instance:
full_command_line := DllCall("GetCommandLine", "str")
if not (A_IsAdmin or RegExMatch(full_command_line, " /restart(?!\S)"))
{
try ; leads to having the script re-launching itself as administrator
{
if A_IsCompiled
Run *RunAs "%A_ScriptFullPath%" /restart
else
Run *RunAs "%A_AhkPath%" /restart "%A_ScriptFullPath%"
}
ExitApp
}
更多详细信息请阅读https://autohotkey.com/docs/commands/Run.htm#RunAs。
答案2
运行为行政解决方案对我来说不起作用。我最终将粘贴命令从 改为Send ^v
,SendInput %clipboard%
然后它开始完美运行。