找回密码
 加入
搜索
查看: 2783|回复: 3

[系统综合] 如何将剪贴板内容直接存为图片? 【已解决】

[复制链接]
发表于 2011-7-26 15:00:39 | 显示全部楼层 |阅读模式
本帖最后由 kevinch 于 2011-7-26 18:43 编辑

有些软件不支持直接将复制的区域导出为图片,但可以复制进剪贴板中,可否有一种方法将剪贴板的内容直接存为图片,望高手指定一二。
发表于 2011-7-26 18:16:59 | 显示全部楼层
是将剪贴板的内容写成位图文件?
#include <GuiConstantsEx.au3>
#include <ClipBoard.au3>
#include <WindowsConstants.au3>
#include <GuiConstantsEx.au3>
#include <GDIPlus.au3>

Global $iMemo

_Main()

Func _Main()
        Local $hGUI, $btn_SetData, $btn_GetData, $hMemory, $tData, $iFormat

        $hGUI = GUICreate("Clipboard", 400, 350)
        $btn_SetData = GUICtrlCreateButton("抓图", 50, 310, 140, 30)
        $btn_GetData = GUICtrlCreateButton("写入图片", 210, 310, 140, 30)
        GUISetState()

        While 1
                Switch GUIGetMsg()
                        Case $GUI_EVENT_CLOSE
                                ExitLoop
                        Case $btn_SetData
                                        msgbox(0,0,"需要先抓图到剪贴板")
                        Case $btn_GetData
                                If Not _ClipBoard_Open($hGUI) Then _WinAPI_ShowError("_ClipBoard_Open failed")
                                $count = _ClipBoard_CountFormats()
                                For $i = 1 To $count
                                        $iFormat = _ClipBoard_EnumFormats($iFormat)
                                        If $iFormat <> 0 Then
                                                $temp = _ClipBoard_FormatStr($iFormat)
                                                If $temp="Bitmap" Then
                                                $hMemory = _ClipBoard_GetDataEx($CF_bitmap)
                                                If $hMemory = 0 Then _WinAPI_ShowError("_ClipBoard_GetDataEx failed")
                                                _ClipBoard_Close()
                                                
                                                _GDIPlus_Startup()
                                                $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hMemory)
                                                $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
                                                _GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap, 0, 0)
                                                _GDIPlus_ImageSaveToFile ($hBitmap, @ScriptDir & "\Explame_Image.jpg")

                                                _GDIPlus_GraphicsDispose($hGraphic)
                                                _GDIPlus_ImageDispose($hBitmap)
                                                _WinAPI_DeleteObject($hMemory)

                                                _GDIPlus_Shutdown()
                                                ShellExecute(@ScriptDir & "\Explame_Image.jpg")
                                                EndIf
                                        EndIf
                                Next
                EndSwitch
        WEnd

EndFunc   ;==>_Main

评分

参与人数 1金钱 +40 贡献 +5 收起 理由
kevinch + 40 + 5 厉害,佩服!

查看全部评分

 楼主| 发表于 2011-7-26 18:43:19 | 显示全部楼层
3mile大侠一出手就解决了,十分之感谢及佩服!
发表于 2016-10-27 01:06:35 | 显示全部楼层
回复 2# 3mile


    老大請教一下  測試 上面語法  使用 PRINT SCREEN  可以正常運作

但是 如果是 複製 EXCEL 上面的圖片 卻沒有反應

請教 如何判斷 是不是圖片呢   可以 連 複製EXCEL上的圖片 都可以直接存檔嗎
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-25 14:40 , Processed in 0.077897 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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