gpt4 book ai didi

每隔一次执行复制(Ctrl-C)的 AutoHotKey 奇怪问题

转载 作者:行者123 更新时间:2023-12-04 18:12:42 25 4
gpt4 key购买 nike

我是编写自己的 AutoHotKey 脚本的新手,所以这一定是我在这里想念的愚蠢的东西。

该脚本的目的是让用户选择一些文本并按下热键 (Win-W)。菜单弹出,他们单击菜单项。然后应将所选文本复制到剪贴板。这就是我现在要做的。

问题是它第一次工作,然后失败,然后工作,然后失败等等。它基本上只能每隔一次工作。

我正在使用最新的 AutoHotKey_l 运行 Win7 x64 (Unicode 32 位)。

我在 ClipWait 上超时了,它基本上只是等待,从不接收复制的文本,并发出 ErrorLevel 1。

这是代码:

#SingleInstance force
; EXAMPLE #2: This is a working script that creates a popup menu that is displayed when the user presses the Win-w hotkey.

; Create the popup menu by adding some items to it.
Menu, MyMenu, Add, Demo, Demo

return ; End of script's auto-execute section.

Demo:
clipboard = ; Start off empty to allow ClipWait to detect when the text has arrived.
Send ^c
ClipWait, 2 ; Wait for the clipboard to contain text.
if ErrorLevel = 1
{
MsgBox Copy failed
}
else
{
MsgBox Copy worked
}
return

#w::Menu, MyMenu, Show ; i.e. press the Win-w hotkey to show the menu.

任何帮助将不胜感激。

最佳答案

当您的脚本在其他程序中偶尔出现和/或不同时,
首先要尝试模拟按键之间的按键持续时间和/或延迟时间。
这是因为有些程序不是为了处理 AutoHotkey 发送的速度而设计的
人工击键。

这是最基本的例子:

f1::
Send, {ctrl down}
Sleep, 40
Send, {c down}
Sleep, 40
Send, {c up}
Sleep, 40
Send, {ctrl up}
Return

我们有几种方法可以使它更简洁。
最简单的(但并不总是可取的,因为它在延迟期间会阻塞,与 sleep 不同)
SetKeyDelay 命令,仅适用于 SendEvent 和 SendPlay 模式。
f2::
SetKeyDelay, 40 ; could be set at the top of the script instead.
Send, {ctrl down}{c down}{c up}{ctrl up}
Return

使用 AHK_L 的人可以使用 for 循环和数组:
f3::
For i, element in array := ["{ctrl down}","{c down}","{c up}","{ctrl up}"] {
Sendinput, %element%
Sleep, 40
} Return

而那些使用 AHK basic (或 AHK_L) 的人可以使用 Loop, Parse :
f4::
list := "{ctrl down},{c down},{c up},{ctrl up}"
Loop Parse, list, `,
{
Sendinput, %A_LoopField%
Sleep, 40
} Return

阅读这三个 Sendmodes 很有用.
更多信息可以在 Send command's page 底部找到.

关于每隔一次执行复制(Ctrl-C)的 AutoHotKey 奇怪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10125558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com