【问题标题】:Distinguish source of the clipboard change区分剪贴板更改的来源
【发布时间】:2021-03-19 10:07:55
【问题描述】:

我想在剪贴板内容发生变化时记录它,因此我创建了以下代码:

#Persistent
FileEncoding, UTF-8
OnClipboardChange("ClipChanged")
return

ClipChanged(Type) {
    now := A_Now
    FormatTime, time, now, dd.MM.yyyy HH:mm:ss
    FileAppend, % Format("{}   '{}'`n", time, Clipboard), D:\clipboard_log.txt
}

现在,我想忽略我更改剪贴板的情况。我想记录仅由外部应用程序所做的剪贴板更改。我想出了一个主意:

#Persistent
FileEncoding, UTF-8
OnClipboardChange("ClipChanged")
global clipChangedByMe := false
return

ClipChanged(Type) {
    if (clipChangedByMe)
    {
        clipChangedByMe := false
    }
    else
    {
        now := A_Now
        FormatTime, time, now, dd.MM.yyyy HH:mm:ss
        FileAppend, % Format("{}   '{}'`n", time, Clipboard), D:\clipboard_log.txt
    }
}

^c::
    clipChangedByMe := true
    Clipboard := ClipboardAll
return

由于某种原因,ClipChanged 事件不会在以下行之后触发:Clipboard := ClipboardAll。怎么了?

【问题讨论】:

    标签: autohotkey


    【解决方案1】:

    乍一看,我在这里看到了几个问题。如果要保留 Ctrl + Coriginal function,则必须使用波浪号前缀:~^c。其次,ClipboardClipboardAll 都是内置变量,您出于某种原因将一个分配给另一个?

    更新:嗯,以下似乎有效:

    Global clipChangedByMe := false
    OnClipboardChange("ClipChanged")
    
    ~^c::clipChangedByMe := true
    
    ClipChanged() {
        If (clipChangedByMe)
            clipChangedByMe := false
        else {
            FormatTime, time,, dd.MM.yyyy HH:mm:ss
            FileAppend, % Format("{}`n{}`n`n", time, Clipboard), D:\clipboard.log
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多