如何实现用鼠标连续选取文本进行复制
想做一个批量复制的小工具,思路是:启动工具(按快捷键),这时会出现一个停止按钮
用鼠标选取一段文本
再选取第二段文本
再选取第三段文本
……
单击停止按钮,结束复制
最后,到需要的编辑器(如记事本当中),直接Ctrl+V
###########################
现在的问题就是如何实现用鼠标连续选取文本进行复制?
谢谢! 我觉得还是不要自动复制的好,那样可能会造成很多麻烦。。
建议仍采用快捷键复制,然后粘贴时可以获取所有复制的内容,那样代码也好办多了。 #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粗略写了一个,自己改良下就成为一个不错的小工具了 好多天没有上网了
首先要谢谢两位的回复
lynfr8的示例,测试过,功能基本实现了
谢谢lynfr8
就是复制过程中,经常会出现某一次选中的内容漏下的情况 因为Sleep(2000),你可以自己修改。
还有很多地方可以根据需要处理:
比如暂停与记录的切换;
光标停留处的控件为可选择的(文本);
是否显示ToolTip;
等等... 谢谢afan朋友们的回复
我是将Sleep(2000)改为Sleep(1000)后的结果
还有,如何将程序运行后,那个”崩崩“的声音去掉
谢谢 ”崩崩“的声音是因为其在软件界面 Ctrl-C 的结果(在点击记录前你可以Ctrl-C试试~)
这也就是我前面提到的“光标停留处的控件为可选择的(文本)”原因之一~ 还是鼠标热键比较可靠 可惜au3的热键不好舒服
这里可以参考下 ahk的小众软件某青蛙写的 类似功能的东西 见过 忘了名字了
鼠标左键为热键 判断鼠标移动距离 然后松开 复制
好像是公开源代码的 去学习下 然后用au3的 鼠标热键udf写一下 就是利用鼠标代替CTRL+C CTRL+V 好东西先用了
页:
[1]