老榆头 发表于 2009-8-16 14:19:59

如何实现用鼠标连续选取文本进行复制

想做一个批量复制的小工具,思路是:
启动工具(按快捷键),这时会出现一个停止按钮
用鼠标选取一段文本
再选取第二段文本
再选取第三段文本
……
单击停止按钮,结束复制
最后,到需要的编辑器(如记事本当中),直接Ctrl+V
###########################
现在的问题就是如何实现用鼠标连续选取文本进行复制?

谢谢!

afan 发表于 2009-8-16 17:20:01

我觉得还是不要自动复制的好,那样可能会造成很多麻烦。。
建议仍采用快捷键复制,然后粘贴时可以获取所有复制的内容,那样代码也好办多了。

lynfr8 发表于 2009-8-16 18:16:45

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form = GUICreate("记录笔", 259, 69, 192, 124)
$Button = GUICtrlCreateButton("记录", 80, 16, 81, 33)
GUISetState(@SW_SHOW)
Dim $i , $txt, $Paused,$record,$Edit
HotKeySet("{F1}", "Pause")
HotKeySet("{ESC}", "ESC")

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
      Case $Button
                        GUICtrlSetData($Button,'停止')
                  _ClipGet()
               
        EndSwitch
WEnd

Func _ClipGet()
        $txt = ''
        $Clip= ''
        For $i = 1 To 10000
                Sleep(2000)
                Send("^c")
                If ClipGet()<>$Clip Then
                $Clip =ClipGet()
                $txt =$txt& @CRLF&ClipGet()
       ToolTip($txt,0,0)
        Else
                ContinueLoop
        EndIf
        Next
        EndFunc


Func Pause()
    $Paused = NOT $Paused
    While $Paused
      sleep(100)
                TrayTip("暂停记录","",0)
    WEnd

EndFunc

Func ESC()
        ClipPut($txt)
        MsgBox(0, "剪贴板内容:",$txt )
        Exit
EndFunc粗略写了一个,自己改良下就成为一个不错的小工具了

老榆头 发表于 2009-8-27 17:49:17

好多天没有上网了

首先要谢谢两位的回复
lynfr8的示例,测试过,功能基本实现了
谢谢lynfr8

就是复制过程中,经常会出现某一次选中的内容漏下的情况

afan 发表于 2009-8-27 18:18:46

因为Sleep(2000),你可以自己修改。
还有很多地方可以根据需要处理:
比如暂停与记录的切换;
光标停留处的控件为可选择的(文本);
是否显示ToolTip;
等等...

老榆头 发表于 2009-8-27 19:56:21

谢谢afan朋友们的回复
我是将Sleep(2000)改为Sleep(1000)后的结果

还有,如何将程序运行后,那个”崩崩“的声音去掉
谢谢

afan 发表于 2009-8-27 21:51:00

”崩崩“的声音是因为其在软件界面 Ctrl-C 的结果(在点击记录前你可以Ctrl-C试试~)
这也就是我前面提到的“光标停留处的控件为可选择的(文本)”原因之一~

sxd 发表于 2009-9-1 02:58:56

还是鼠标热键比较可靠 可惜au3的热键不好舒服

这里可以参考下 ahk的小众软件某青蛙写的 类似功能的东西 见过 忘了名字了

鼠标左键为热键 判断鼠标移动距离 然后松开 复制

好像是公开源代码的 去学习下 然后用au3的 鼠标热键udf写一下

eq3275 发表于 2009-12-6 04:51:44

就是利用鼠标代替CTRL+C CTRL+V

xz00311 发表于 2009-12-7 14:38:46

好东西先用了
页: [1]
查看完整版本: 如何实现用鼠标连续选取文本进行复制