找回密码
 加入
搜索
查看: 7120|回复: 12

[AU3基础] 请教如何将图片数据设置到剪切板(已解决!)

  [复制链接]
发表于 2010-8-24 21:51:26 | 显示全部楼层 |阅读模式
本帖最后由 佐子 于 2010-8-25 17:16 编辑

如何将图片数据设置到剪切板,按ctrl+v能粘贴到画图或QQ聊天窗口中?搜索帖子无果,望能解答!
尝试过_ClipBoard_SetDataEx和_ClipBoard_SetData,都没有效果,就是不知道该把什么样的数据放进去,哪位大大能指点迷津啊!

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

 楼主| 发表于 2010-8-25 01:07:51 | 显示全部楼层
研究好久还是搞不定,GDI的东西实在是不理解啊,希望明天能有人给我解答,先谢了~
发表于 2010-8-25 03:30:31 | 显示全部楼层
#Include <Misc.au3>
_ClipPutFile("文件的完整路径" ,  "|")
发表于 2010-8-25 06:36:20 | 显示全部楼层
给个例子,论坛里应该有很多.
$ScreenSaveToBit= _ScreenCapture_Capture("", $aPos[0], $aPos[1], $aPos[0] + $aPos[2], $aPos[1] + $aPos[3], 0)
                                        _ClipBoard_Open(0)
                                        _ClipBoard_Empty()
                                        _ClipBoard_SetDataEx($ScreenSaveToBit,$CF_BITMAP)
                                        _ClipBoard_Close()
                                        _WinAPI_DeleteObject($ScreenSaveToBit)

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

 楼主| 发表于 2010-8-25 13:36:40 | 显示全部楼层
回复 3# lixiaolong
感谢3楼的解答,我的意思不是复制这个文件,而是复制图像数据,能粘贴到画图中。不过还是谢谢你~
 楼主| 发表于 2010-8-25 13:41:43 | 显示全部楼层
回复 4# republican
谢谢您给的代码,我知道屏幕截图可以实现,但是否能实现将原来的一个图片文件直接读取出来?
我使用如下代码,不成功,是否还需要一些GDI的语句?
_GDIPlus_Startup ()
$hImage = _GDIPlus_ImageLoadFromFile (@MyDocumentsDir& "\GDIPlus_Image.jpg")
_ClipBoard_Open(0)
_ClipBoard_Empty()
_ClipBoard_SetDataEx($hImage ,$CF_BITMAP)
_ClipBoard_Close()
_GDIPlus_ShutDown ()
发表于 2010-8-25 17:10:25 | 显示全部楼层
回复 6# 佐子

这样做是可以的:
$hBitMap=_WinAPI_LoadImage(_WinAPI_GetModuleHandle(0), "081229_sy_12.bmp", 0, 0, 0, 0x0010)
_ClipBoard_Open(0)
_ClipBoard_Empty()
_ClipBoard_SetDataEx($hBitMap ,$CF_BITMAP)
_ClipBoard_Close()
但下面的代码不知道为什么不成功,理论上应该是成功的....
_GDIPlus_Startup ()
$hImage = _GDIPlus_BitmapCreateFromFile ("081229_sy_12.bmp")
$hBitMap=_GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
_ClipBoard_Open(0)
_ClipBoard_Empty()
_ClipBoard_SetDataEx($hBitMap ,$CF_BITMAP)
_ClipBoard_Close()
_GDIPlus_ShutDown ()

评分

参与人数 2金钱 +40 收起 理由
C.L + 20
afan + 20

查看全部评分

 楼主| 发表于 2010-8-25 17:16:10 | 显示全部楼层
回复 7# republican
实在是太谢谢你了,上面代码成功了,我怎么就没想到用API呢,不过下面那段代码不成功我也很费解。总之谢谢你~
发表于 2010-8-26 00:22:37 | 显示全部楼层
回复 7# republican
$hImage = _GDIPlus_BitmapCreateFromFile ("081229_sy_12.bmp")
$hBitMap=_GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage)
_ClipBoard_Open(0)
这段代码为什么不成功,我也有点费解,返回的句柄$hBitMap的确是位图句柄没错啊!我很赞同你的说法,理论上是应该成功的。
难道从Bitmap对象返回的位图句柄指向的是Bitmap对象而不是原始的位图数据?
发表于 2011-6-18 23:08:40 | 显示全部楼层
顶一下,没解决的问题
发表于 2012-6-9 07:54:11 | 显示全部楼层
回复 7# republican


   大大们,你们做程序的时候,能不能考虑新手,

发完整点的。。
发表于 2012-6-9 07:56:42 | 显示全部楼层
回复 7# republican

#Include <WinAPI.au3>
#Include <Clipboard.au3>
$hBitMap=_WinAPI_LoadImage(_WinAPI_GetModuleHandle(0),"\test.bmp", 0, 0, 0, 0x0010)
_ClipBoard_Open(0)
_ClipBoard_Empty()
_ClipBoard_SetDataEx($hBitMap ,$CF_BITMAP)
_ClipBoard_Close()

我什么地方弄错了。没办法写入。
发表于 2013-8-16 11:55:00 | 显示全部楼层
各位大侠的分享,真心给力
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-28 23:34 , Processed in 0.089292 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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