找回密码
 加入
搜索
查看: 4811|回复: 9

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

[复制链接]
发表于 2009-8-16 14:19:59 | 显示全部楼层 |阅读模式
想做一个批量复制的小工具,思路是:
启动工具(按快捷键),这时会出现一个停止按钮
用鼠标选取一段文本
再选取第二段文本
再选取第三段文本
……
单击停止按钮,结束复制
最后,到需要的编辑器(如记事本当中),直接Ctrl+V
###########################
现在的问题就是如何实现用鼠标连续选取文本进行复制?

谢谢!
发表于 2009-8-16 17:20:01 | 显示全部楼层
我觉得还是不要自动复制的好,那样可能会造成很多麻烦。。
建议仍采用快捷键复制,然后粘贴时可以获取所有复制的内容,那样代码也好办多了。
发表于 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
粗略写了一个,自己改良下就成为一个不错的小工具了

评分

参与人数 2金钱 +12 贡献 +5 收起 理由
老榆头 + 2
afan + 10 + 5

查看全部评分

 楼主| 发表于 2009-8-27 17:49:17 | 显示全部楼层
好多天没有上网了

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

就是复制过程中,经常会出现某一次选中的内容漏下的情况
发表于 2009-8-27 18:18:46 | 显示全部楼层
因为Sleep(2000),你可以自己修改。
还有很多地方可以根据需要处理:
比如暂停与记录的切换;
光标停留处的控件为可选择的(文本);
是否显示ToolTip;
等等...
 楼主| 发表于 2009-8-27 19:56:21 | 显示全部楼层
谢谢afan朋友们的回复
我是将Sleep(2000)改为Sleep(1000)后的结果

还有,如何将程序运行后,那个”崩崩“的声音去掉
谢谢
发表于 2009-8-27 21:51:00 | 显示全部楼层
”崩崩“的声音是因为其在软件界面 Ctrl-C 的结果(在点击记录前你可以Ctrl-C试试~)
这也就是我前面提到的“光标停留处的控件为可选择的(文本)”原因之一~
发表于 2009-9-1 02:58:56 | 显示全部楼层
还是鼠标热键比较可靠 可惜au3的热键不好舒服

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

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

好像是公开源代码的 去学习下 然后用au3的 鼠标热键udf写一下
发表于 2009-12-6 04:51:44 | 显示全部楼层
就是利用鼠标代替CTRL+C CTRL+V
发表于 2009-12-7 14:38:46 | 显示全部楼层
好东西先用了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-22 15:37 , Processed in 0.076346 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表