如何将剪贴板内容直接存为图片? 【已解决】
本帖最后由 kevinch 于 2011-7-26 18:43 编辑有些软件不支持直接将复制的区域导出为图片,但可以复制进剪贴板中,可否有一种方法将剪贴板的内容直接存为图片,望高手指定一二。{:face (396):} 是将剪贴板的内容写成位图文件?
#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
3mile大侠一出手就解决了,十分之感谢及佩服! 回复 2# 3mile
老大請教一下測試 上面語法使用 PRINT SCREEN可以正常運作
但是 如果是 複製 EXCEL 上面的圖片 卻沒有反應
請教 如何判斷 是不是圖片呢 可以 連 複製EXCEL上的圖片 都可以直接存檔嗎
页:
[1]