找回密码
 加入
搜索
查看: 5455|回复: 14

[AU3基础] 如何不用键盘模拟,实现 CTRL+C 的复制功能

 火.. [复制链接]
发表于 2010-12-24 20:51:48 | 显示全部楼层 |阅读模式
本帖最后由 liumailong 于 2010-12-25 15:10 编辑

我指的复制是一般说的 CTRL+C 或鼠标右键菜单的复制

既复制光标或鼠标所选到剪切板。

比如:在文件夹中复制,粘贴出来的是文件夹,
         在网页中复制,粘贴出来有完整的图文格式(当然要被粘贴的程序支持)

这个如何在不用键盘模拟的情况下,实现?
发表于 2010-12-24 21:07:20 | 显示全部楼层
已经是快捷键了,你还想怎么实现呢?
发表于 2010-12-24 22:37:05 | 显示全部楼层
LS误解了LZ的意思.
其实windows资源管理器中集成的CTRL+C是调用EM_GETSEL.
具体见MSDNhttp://msdn.microsoft.com/zh-cn/library/aa453012(en-us).aspx
发表于 2010-12-25 01:20:36 | 显示全部楼层
好复杂,不知如何实现
发表于 2010-12-26 14:18:08 | 显示全部楼层
msdn 上好像有 你自己查查吧
发表于 2010-12-26 17:22:27 | 显示全部楼层
回复 3# ceoguang


    版主大大, 最好弄个例子出来~这里可都是新手啊~呵呵,感谢、
发表于 2010-12-26 21:30:31 | 显示全部楼层
支持一下楼上,msdn?一听就知道是一个很复杂很复杂的东西
发表于 2010-12-28 23:10:37 | 显示全部楼层
我给补上部分的代码哈

这个是来自edit控件

Func _GUICtrlEdit_GetSel($hWnd)
        If $Debug_Ed Then __UDF_ValidateClassName($hWnd, $__EDITCONSTANT_ClassName)
        If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)

        Local $aSel[2]
        Local $wparam = DllStructCreate("uint Start")
        Local $lparam = DllStructCreate("uint End")
        _SendMessage($hWnd, $EM_GETSEL, DllStructGetPtr($wparam), DllStructGetPtr($lparam), 0, "ptr", "ptr")
        $aSel[0] = DllStructGetData($wparam, "Start")
        $aSel[1] = DllStructGetData($lparam, "End")
        Return $aSel
EndFunc   ;==>_GUICtrlEdit_GetSel
获得edit控件的数据实际上是向他发送了ME_SETSEL消息,这样就自动复制了。其他控件也如此,对于进程外的诸如控件等用钩子,或者获得其资源句柄,然后发送这个消息即可。
发表于 2010-12-29 05:19:40 | 显示全部楼层
支持下!等待高手解答!
发表于 2010-12-29 11:37:06 | 显示全部楼层
autoit对文件及文件夹复制有filecopy函数,也可调用系统FILE SYSTEM OBJET接口,filecopy foldercopy
发表于 2010-12-29 11:38:13 | 显示全部楼层
autoit对文件及文件夹复制有filecopy函数,也可调用系统FILE SYSTEM OBJET接口,filecopy foldercopy
发表于 2010-12-29 18:14:48 | 显示全部楼层
高深的写不来,不想手按就用代码自动操作!(选择的还是要手动定位)
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
发表于 2010-12-29 18:16:20 | 显示全部楼层
这个是在磁盘中点击文件或文件夹即将文件或文件夹自动复制到指定目录。
http://www.autoitx.com/thread-20816-1-1.html
发表于 2010-12-29 18:17:03 | 显示全部楼层
剪贴板的呢在论坛找找,应该有,或者等改天我再写
发表于 2010-12-29 18:27:59 | 显示全部楼层
键盘模拟是一个拷贝动作
不使用键盘模拟也是一个拷贝动作
不使用键盘模拟的拷贝动作可能需要各种程序的控件接口用于去发送该动作消息(可能?)
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-15 18:36 , Processed in 0.076454 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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