AutoHotKey:在 Firefox 和其他程序中监控选择的合并脚本

AutoHotKey: Merge scripts that monitor selection in Firefox and other programs

我正在努力使用一个脚本来监视 FireFox、Adobe Acrobat 和另一个程序中的鼠标选择,然后将此选择复制到剪贴板并根据正则表达式进行更改。对于每个程序,都需要另一个正则表达式。每个脚本作为一个单独的程序工作,但是当我合并它们时,复制的文本不会根据我的正则表达式进行更改。

Adobe Acrobat 脚本:

#ifWinActive ahk_class AcrobatSDIWindow
~LButton::
now := A_TickCount
while GetKeyState("LButton", "P")
    continue
if (A_TickCount-now > 600 )
{   
    Send ^c
    copied := true
}
return

OnClipboardChange:
if !copied
    return

copied := false
ToolTip % Clipboard := RegExReplace(Clipboard, "\r\n", " ")
SetTimer, ToolTipOff, -1000
return

ToolTipOff:
ToolTip
return

以及 Firefox 的脱衣舞:

#ifWinActive ahk_class MozillaWindowClass
~LButton::
now := A_TickCount
while GetKeyState("LButton", "P")
    continue
if (A_TickCount-now > 600 )
{   
    Send ^c
    copied := true
}
return

OnClipboardChange2:
if !copied
    return

copied := false
ToolTip % Clipboard := RegExReplace(Clipboard, "[0-9]\.\s*|\s?\([^)]*\)|\.")
SetTimer, ToolTipOff1, -1000
return

ToolTipOff1:
ToolTip
return

#If 仅适用于热键,不适用于标签。使用 OnClipboardChange 似乎是不必要的。当您按下 ctrl+c 时,您已经知道剪贴板已更改。
我也非常推荐为热键和 #If 语句设置缩进。
这是我的做法:

#If WinActive("ahk_class AcrobatSDIWindow") || WinActive("ahk_class MozillaWindowClass")
    ~LButton::
        now := A_TickCount
        while GetKeyState("LButton", "P")
            continue
        if (A_TickCount-now > 600 )
        {   
            Send ^c
            if WinActive("ahk_class AcrobatSDIWindow")
            {
                regex := "\r\n"
                replace := " "
            }
            else if WinActive("ahk_class MozillaWindowClass")
            {
                regex := "[0-9]\.\s*|\s?\([^)]*\)|\."
                replace := ""
            }
            ToolTip % Clipboard := RegExReplace(Clipboard, regex, replace)
            SetTimer, ToolTipOff, -1000
        }
    return
#If

ToolTipOff:
    ToolTip
return

(未经测试)

编辑:

.....
    ~Left::
    ~Right::
    ~Up::
    ~Down::
        now := A_TickCount
        while GetKeyState("Shift", "P")
            continue
        if (A_TickCount-now > 600 )
        {   
            oldShiftState := GetKeyState("Shift", "P")
            Send, {Shift Up}
            Send ^c
            If (oldShiftState)
                Send, {Shift Down}
            .....

(未经测试)