佐子 发表于 2010-8-24 21:51:26

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

本帖最后由 佐子 于 2010-8-25 17:16 编辑

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

佐子 发表于 2010-8-25 01:07:51

研究好久还是搞不定,GDI的东西实在是不理解啊,希望明天能有人给我解答,先谢了~

lixiaolong 发表于 2010-8-25 03:30:31

#Include <Misc.au3>
_ClipPutFile("文件的完整路径" ,"|")

republican 发表于 2010-8-25 06:36:20

给个例子,论坛里应该有很多.$ScreenSaveToBit= _ScreenCapture_Capture("", $aPos, $aPos, $aPos + $aPos, $aPos + $aPos, 0)
                                        _ClipBoard_Open(0)
                                        _ClipBoard_Empty()
                                        _ClipBoard_SetDataEx($ScreenSaveToBit,$CF_BITMAP)
                                        _ClipBoard_Close()
                                        _WinAPI_DeleteObject($ScreenSaveToBit)

佐子 发表于 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 ()

republican 发表于 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 ()

佐子 发表于 2010-8-25 17:16:10

回复 7# republican
实在是太谢谢你了,上面代码成功了,我怎么就没想到用API呢,不过下面那段代码不成功我也很费解。总之谢谢你~{:face (316):}

C.L 发表于 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对象而不是原始的位图数据?

qq123123 发表于 2011-6-18 23:08:40

顶一下,没解决的问题

9922250 发表于 2012-6-9 07:54:11

回复 7# republican


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

发完整点的。。

9922250 发表于 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

各位大侠的分享,真心给力
页: [1]
查看完整版本: 请教如何将图片数据设置到剪切板(已解决!)