kevinch 发表于 2011-7-26 15:00:39

如何将剪贴板内容直接存为图片? 【已解决】

本帖最后由 kevinch 于 2011-7-26 18:43 编辑

有些软件不支持直接将复制的区域导出为图片,但可以复制进剪贴板中,可否有一种方法将剪贴板的内容直接存为图片,望高手指定一二。{:face (396):}

3mile 发表于 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

kevinch 发表于 2011-7-26 18:43:19

3mile大侠一出手就解决了,十分之感谢及佩服!

kk_lee69 发表于 2016-10-27 01:06:35

回复 2# 3mile


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

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

請教 如何判斷 是不是圖片呢   可以 連 複製EXCEL上的圖片 都可以直接存檔嗎
页: [1]
查看完整版本: 如何将剪贴板内容直接存为图片? 【已解决】