如何不用键盘模拟,实现 CTRL+C 的复制功能
本帖最后由 liumailong 于 2010-12-25 15:10 编辑我指的复制是一般说的 CTRL+C 或鼠标右键菜单的复制
既复制光标或鼠标所选到剪切板。
比如:在文件夹中复制,粘贴出来的是文件夹,
在网页中复制,粘贴出来有完整的图文格式(当然要被粘贴的程序支持)
这个如何在不用键盘模拟的情况下,实现? 已经是快捷键了,你还想怎么实现呢? LS误解了LZ的意思.
其实windows资源管理器中集成的CTRL+C是调用EM_GETSEL.
具体见MSDNhttp://msdn.microsoft.com/zh-cn/library/aa453012(en-us).aspx 好复杂,不知如何实现 msdn 上好像有 你自己查查吧 回复 3# ceoguang
版主大大, 最好弄个例子出来~这里可都是新手啊~呵呵,感谢、 支持一下楼上,msdn?一听就知道是一个很复杂很复杂的东西 我给补上部分的代码哈
这个是来自edit控件
Func _GUICtrlEdit_GetSel($hWnd)
If $Debug_Ed Then __UDF_ValidateClassName($hWnd, $__EDITCONSTANT_ClassName)
If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
Local $aSel
Local $wparam = DllStructCreate("uint Start")
Local $lparam = DllStructCreate("uint End")
_SendMessage($hWnd, $EM_GETSEL, DllStructGetPtr($wparam), DllStructGetPtr($lparam), 0, "ptr", "ptr")
$aSel = DllStructGetData($wparam, "Start")
$aSel = DllStructGetData($lparam, "End")
Return $aSel
EndFunc ;==>_GUICtrlEdit_GetSel
获得edit控件的数据实际上是向他发送了ME_SETSEL消息,这样就自动复制了。其他控件也如此,对于进程外的诸如控件等用钩子,或者获得其资源句柄,然后发送这个消息即可。 支持下!等待高手解答! autoit对文件及文件夹复制有filecopy函数,也可调用系统FILE SYSTEM OBJET接口,filecopy foldercopy autoit对文件及文件夹复制有filecopy函数,也可调用系统FILE SYSTEM OBJET接口,filecopy foldercopy 高深的写不来,不想手按就用代码自动操作!(选择的还是要手动定位)
Send("{PRINTSCREEN}")
While 1
Send("^c")
$ClipGet = ClipGet()
If @error<>1 And @error<>3 And @error<>4 Then
If @error = 2 Then
Run("mspaint.exe", @MyDocumentsDir, @SW_MAXIMIZE)
Else
Run("Notepad.exe", @MyDocumentsDir, @SW_MAXIMIZE)
EndIf
Sleep(1000)
If StringInStr(WinGetTitle("",""), "记事本") > 0 Or StringInStr(WinGetTitle("",""), "画图") > 0 Then
Send("^v")
Sleep(2000)
Send("!{F4}")
Send("!{n}")
ClipPut("")
EndIf
EndIf
Sleep(3000)
WEnd
这个是在磁盘中点击文件或文件夹即将文件或文件夹自动复制到指定目录。
http://www.autoitx.com/thread-20816-1-1.html 剪贴板的呢在论坛找找,应该有,或者等改天我再写 键盘模拟是一个拷贝动作
不使用键盘模拟也是一个拷贝动作
不使用键盘模拟的拷贝动作可能需要各种程序的控件接口用于去发送该动作消息(可能?)
页:
[1]