【问题标题】:AutoHotkey: Similar function like ClipWait for "Select All"AutoHotkey:类似于 ClipWait 的“全选”功能
【发布时间】:2015-10-22 21:15:11
【问题描述】:

对于“Ctrl+A”/“全选”,AutoHotkey 是否有类似于“ClipWait”的功能。

或者有没有可能以某种方式获得这样的功能?

【问题讨论】:

  • 通常sleep 100 是可以的。你为什么不使用它?否则唯一想到的就是用PixelGetColor分析窗口中像素颜色的变化。
  • 每天在一个包含 7000 多行的 SysListView321 上工作。但在同一操作中,还有其他 SysListView321 表少于 2000 行。所以,如果我增加睡眠时间。由于几个表有 7k+ 行,整个操作变得缓慢。如果我减少睡眠时间,当遇到一个巨大的表时,Ctrl+C和clipwait的下一步将无法完成,操作将挂起并等待。因此,也在寻找类似于 ctrl+a 的 clipwait 的东西。将检查您对像素颜色更改的建议。 :) 谢谢
  • 看看ControlGet:ControlGet, txt, list, , SysListView321, YOURWINDOWTITLE
  • 已经使用 2 个版本的代码来实现相同的目的。我称之为“慢版本”的另一个版本使用 ControlGet 并将所有数据存储在一个变量中。但是 Ctrl+a Ctrl+c 剪贴板的工作速度快了 3 倍..

标签: process selection autohotkey monitor selectall


【解决方案1】:

这样就够了吗?

^b::
    send ^a
    selectionWait()
    msgbox, All has been selected
return

selectionWait() {
    clipboardSave := clipboardAll
    loop {
        send ^c
        if(clipboard != clipboardSave)
            if(clipboard != "")
                break
    }
    clipboard := clipboardSave
}

ctrl+c 被触发 before 一切都被选中,但这是故意的。将重复该操作,直到剪贴板内容发生更改,之后剪贴板将重置为之前的值

【讨论】:

  • 如何留出时间 Ctrl+a 完成全选操作,然后才开始复制操作?通常面临的问题是:如果数据量很大,那么 Ctrl+a 需要比平时更多的时间来选择完整的数据。在该选择操作完成之前不得触发 Ctrl+c。希望我能解释一下自己。
  • 啊,我明白了。我编辑了我的答案,但原则保持不变。对你有用吗?
  • 不确定剪贴板是如何工作的。剪贴板是否一次填满了整个选择?或者,它是逐行填充的吗?例如。大约有 7000 行数据,可能会发生只有 3000 左右(随意说)行进入剪贴板和代码检查 if(clipboard != clipboardSave) 如果整个 7000 行一次保存到剪贴板(通过 Windows),那么你的代码将完美地工作。否则,即使找到 100 行数据,您的代码也会触发下一个命令,最终只会得到部分数据。请原谅我的无知,如果有的话。
  • 不,您的怀疑很有帮助,请坚持下去。我以为clpb一下子就被填满了,但既然你这么说,我就试了一下。似乎一开始,剪贴板被清空(:=""),在下一步中,在没有缓冲的情况下填充了 100%。所以你可能想在某处包含if(clipboard != "")
  • 抱歉,这里没有母语人士。 xD - 我在 200 MB 文件的文本内容上使用了一个小脚本,我观察到 clipboard 变量经历了两种状态:第一,它丢失了所有以前的内容(无论它们是什么)。第二,它一次包含所有选定的行。中间没有步骤,也没有逐行填充——一切都是同时发生的。
【解决方案2】:

从网络数据库中选择许多行时,我遇到了同样的问题。 “全选”命令没有时间完成,因此使 Copy & ClipWait 没用, 这是美丽的修复:

Loop
{
    Send, ^a
    Send, ^c   
    ClipWait, 1     
    if (!ErrorLevel)  
        break
}

如果您想将等待时间限制为 5 秒,或者像这样:

Loop, 5
{
    Send, ^a
    Send, ^c   
    ClipWait, 1     
    if (!ErrorLevel)  
        break
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    • 2012-10-04
    • 2012-12-19
    • 2017-05-21
    • 1970-01-01
    • 2014-10-04
    • 2013-01-01
    相关资源
    最近更新 更多