<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://devcafe.co.kr/w/index.php?action=history&amp;feed=atom&amp;title=Autoit_%ED%81%B4%EB%A6%BD%EB%B3%B4%EB%93%9C_%EC%9D%B4%EB%AF%B8%EC%A7%80_%EB%B7%B0%EC%96%B4</id>
	<title>Autoit 클립보드 이미지 뷰어 - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="https://devcafe.co.kr/w/index.php?action=history&amp;feed=atom&amp;title=Autoit_%ED%81%B4%EB%A6%BD%EB%B3%B4%EB%93%9C_%EC%9D%B4%EB%AF%B8%EC%A7%80_%EB%B7%B0%EC%96%B4"/>
	<link rel="alternate" type="text/html" href="https://devcafe.co.kr/w/index.php?title=Autoit_%ED%81%B4%EB%A6%BD%EB%B3%B4%EB%93%9C_%EC%9D%B4%EB%AF%B8%EC%A7%80_%EB%B7%B0%EC%96%B4&amp;action=history"/>
	<updated>2026-05-19T08:16:59Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://devcafe.co.kr/w/index.php?title=Autoit_%ED%81%B4%EB%A6%BD%EB%B3%B4%EB%93%9C_%EC%9D%B4%EB%AF%B8%EC%A7%80_%EB%B7%B0%EC%96%B4&amp;diff=2323&amp;oldid=prev</id>
		<title>Devcafe: 새 문서: == 클립보드 이미지 뷰어 == &lt;source lang=autoit&gt;  #include &lt;GUIConstantsEx.au3&gt; #include &lt;WindowsConstants.au3&gt; #include &lt;StaticConstants.au3&gt; #include &lt;ButtonConstants.au3&gt; #include &lt;GDIPlus.au3&gt;  Global $hGUI, $hPic, $hImage = 0, $hBitmap = 0  ; GDI+ 초기화 _GDIPlus_Startup()  ; GUI 생성 $hGUI = GUICreate(&quot;클립보드 이미지 뷰어&quot;, 800, 600, -1, -1, $WS_OVERLAPPEDWINDOW)  ; 버튼 생성 $btnLoad = GUICtrlCreateButton(&quot;클립보드에서 가져오기&quot;, 10, 1...</title>
		<link rel="alternate" type="text/html" href="https://devcafe.co.kr/w/index.php?title=Autoit_%ED%81%B4%EB%A6%BD%EB%B3%B4%EB%93%9C_%EC%9D%B4%EB%AF%B8%EC%A7%80_%EB%B7%B0%EC%96%B4&amp;diff=2323&amp;oldid=prev"/>
		<updated>2025-10-17T01:45:37Z</updated>

		<summary type="html">&lt;p&gt;새 문서: == 클립보드 이미지 뷰어 == &amp;lt;source lang=autoit&amp;gt;  #include &amp;lt;GUIConstantsEx.au3&amp;gt; #include &amp;lt;WindowsConstants.au3&amp;gt; #include &amp;lt;StaticConstants.au3&amp;gt; #include &amp;lt;ButtonConstants.au3&amp;gt; #include &amp;lt;GDIPlus.au3&amp;gt;  Global $hGUI, $hPic, $hImage = 0, $hBitmap = 0  ; GDI+ 초기화 _GDIPlus_Startup()  ; GUI 생성 $hGUI = GUICreate(&amp;quot;클립보드 이미지 뷰어&amp;quot;, 800, 600, -1, -1, $WS_OVERLAPPEDWINDOW)  ; 버튼 생성 $btnLoad = GUICtrlCreateButton(&amp;quot;클립보드에서 가져오기&amp;quot;, 10, 1...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 클립보드 이미지 뷰어 ==&lt;br /&gt;
&amp;lt;source lang=autoit&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;GUIConstantsEx.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;WindowsConstants.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;StaticConstants.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;ButtonConstants.au3&amp;gt;&lt;br /&gt;
#include &amp;lt;GDIPlus.au3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Global $hGUI, $hPic, $hImage = 0, $hBitmap = 0&lt;br /&gt;
&lt;br /&gt;
; GDI+ 초기화&lt;br /&gt;
_GDIPlus_Startup()&lt;br /&gt;
&lt;br /&gt;
; GUI 생성&lt;br /&gt;
$hGUI = GUICreate(&amp;quot;클립보드 이미지 뷰어&amp;quot;, 800, 600, -1, -1, $WS_OVERLAPPEDWINDOW)&lt;br /&gt;
&lt;br /&gt;
; 버튼 생성&lt;br /&gt;
$btnLoad = GUICtrlCreateButton(&amp;quot;클립보드에서 가져오기&amp;quot;, 10, 10, 150, 30)&lt;br /&gt;
$btnSave = GUICtrlCreateButton(&amp;quot;이미지 저장&amp;quot;, 170, 10, 100, 30)&lt;br /&gt;
$btnClear = GUICtrlCreateButton(&amp;quot;지우기&amp;quot;, 280, 10, 80, 30)&lt;br /&gt;
$lblInfo = GUICtrlCreateLabel(&amp;quot;클립보드에 이미지가 없습니다&amp;quot;, 400, 15, 350, 20)&lt;br /&gt;
&lt;br /&gt;
; 이미지 표시 영역 (Pic 컨트롤)&lt;br /&gt;
$hPic = GUICtrlCreatePic(&amp;quot;&amp;quot;, 10, 50, 780, 540, $SS_NOTIFY)&lt;br /&gt;
&lt;br /&gt;
GUISetState(@SW_SHOW, $hGUI)&lt;br /&gt;
&lt;br /&gt;
While 1&lt;br /&gt;
    $nMsg = GUIGetMsg()&lt;br /&gt;
    Switch $nMsg&lt;br /&gt;
        Case $GUI_EVENT_CLOSE&lt;br /&gt;
            ExitLoop&lt;br /&gt;
            &lt;br /&gt;
        Case $btnLoad&lt;br /&gt;
            LoadImageFromClipboard()&lt;br /&gt;
            &lt;br /&gt;
        Case $btnSave&lt;br /&gt;
            SaveImage()&lt;br /&gt;
            &lt;br /&gt;
        Case $btnClear&lt;br /&gt;
            ClearImage()&lt;br /&gt;
    EndSwitch&lt;br /&gt;
WEnd&lt;br /&gt;
&lt;br /&gt;
; 종료 처리&lt;br /&gt;
Cleanup()&lt;br /&gt;
GUIDelete($hGUI)&lt;br /&gt;
_GDIPlus_Shutdown()&lt;br /&gt;
&lt;br /&gt;
; ===== 함수 정의 =====&lt;br /&gt;
&lt;br /&gt;
Func LoadImageFromClipboard()&lt;br /&gt;
    ; 기존 이미지 해제&lt;br /&gt;
    If $hBitmap &amp;lt;&amp;gt; 0 Then&lt;br /&gt;
        _GDIPlus_BitmapDispose($hBitmap)&lt;br /&gt;
        $hBitmap = 0&lt;br /&gt;
    EndIf&lt;br /&gt;
    &lt;br /&gt;
    ; 클립보드에서 비트맵 가져오기&lt;br /&gt;
    $hBitmap = _ClipBoard_GetDataEx($CF_BITMAP)&lt;br /&gt;
    &lt;br /&gt;
    If $hBitmap = 0 Then&lt;br /&gt;
        GUICtrlSetData($lblInfo, &amp;quot;클립보드에 이미지가 없습니다&amp;quot;)&lt;br /&gt;
        MsgBox(48, &amp;quot;알림&amp;quot;, &amp;quot;클립보드에 이미지가 없습니다.&amp;quot;)&lt;br /&gt;
        Return&lt;br /&gt;
    EndIf&lt;br /&gt;
    &lt;br /&gt;
    ; GDI+ 비트맵으로 변환&lt;br /&gt;
    $hImage = _GDIPlus_BitmapCreateFromHBITMAP($hBitmap)&lt;br /&gt;
    &lt;br /&gt;
    If $hImage = 0 Then&lt;br /&gt;
        GUICtrlSetData($lblInfo, &amp;quot;이미지 로드 실패&amp;quot;)&lt;br /&gt;
        MsgBox(16, &amp;quot;오류&amp;quot;, &amp;quot;이미지를 로드할 수 없습니다.&amp;quot;)&lt;br /&gt;
        Return&lt;br /&gt;
    EndIf&lt;br /&gt;
    &lt;br /&gt;
    ; 이미지 크기 가져오기&lt;br /&gt;
    $iWidth = _GDIPlus_ImageGetWidth($hImage)&lt;br /&gt;
    $iHeight = _GDIPlus_ImageGetHeight($hImage)&lt;br /&gt;
    &lt;br /&gt;
    ; 임시 파일로 저장 후 Pic 컨트롤에 표시&lt;br /&gt;
    $sTempFile = @TempDir &amp;amp; &amp;quot;\clipboard_temp.bmp&amp;quot;&lt;br /&gt;
    _GDIPlus_ImageSaveToFile($hImage, $sTempFile)&lt;br /&gt;
    &lt;br /&gt;
    ; Pic 컨트롤 크기 조정 및 이미지 설정&lt;br /&gt;
    Local $picWidth = 780&lt;br /&gt;
    Local $picHeight = 540&lt;br /&gt;
    Local $ratio = 1&lt;br /&gt;
    &lt;br /&gt;
    If $iWidth &amp;gt; $picWidth Or $iHeight &amp;gt; $picHeight Then&lt;br /&gt;
        $ratio = ($iWidth / $picWidth &amp;gt; $iHeight / $picHeight) ? $picWidth / $iWidth : $picHeight / $iHeight&lt;br /&gt;
        $iWidth = Int($iWidth * $ratio)&lt;br /&gt;
        $iHeight = Int($iHeight * $ratio)&lt;br /&gt;
    EndIf&lt;br /&gt;
    &lt;br /&gt;
    GUICtrlSetPos($hPic, 10 + Int(($picWidth - $iWidth) / 2), 50 + Int(($picHeight - $iHeight) / 2), $iWidth, $iHeight)&lt;br /&gt;
    GUICtrlSetImage($hPic, $sTempFile)&lt;br /&gt;
    &lt;br /&gt;
    GUICtrlSetData($lblInfo, &amp;quot;이미지 로드됨: &amp;quot; &amp;amp; _GDIPlus_ImageGetWidth($hImage) &amp;amp; &amp;quot; x &amp;quot; &amp;amp; _GDIPlus_ImageGetHeight($hImage))&lt;br /&gt;
EndFunc&lt;br /&gt;
&lt;br /&gt;
Func SaveImage()&lt;br /&gt;
    If $hImage = 0 Then&lt;br /&gt;
        MsgBox(48, &amp;quot;알림&amp;quot;, &amp;quot;저장할 이미지가 없습니다.&amp;quot;)&lt;br /&gt;
        Return&lt;br /&gt;
    EndIf&lt;br /&gt;
    &lt;br /&gt;
    $sFile = FileSaveDialog(&amp;quot;이미지 저장&amp;quot;, @MyDocumentsDir, &amp;quot;이미지 파일 (*.png;*.jpg;*.bmp)|모든 파일 (*.*)&amp;quot;, 16, &amp;quot;screenshot.png&amp;quot;)&lt;br /&gt;
    &lt;br /&gt;
    If @error Then Return&lt;br /&gt;
    &lt;br /&gt;
    ; 파일 확장자 확인&lt;br /&gt;
    If StringRight($sFile, 4) &amp;lt;&amp;gt; &amp;quot;.png&amp;quot; And StringRight($sFile, 4) &amp;lt;&amp;gt; &amp;quot;.jpg&amp;quot; And StringRight($sFile, 4) &amp;lt;&amp;gt; &amp;quot;.bmp&amp;quot; Then&lt;br /&gt;
        $sFile &amp;amp;= &amp;quot;.png&amp;quot;&lt;br /&gt;
    EndIf&lt;br /&gt;
    &lt;br /&gt;
    _GDIPlus_ImageSaveToFile($hImage, $sFile)&lt;br /&gt;
    &lt;br /&gt;
    If FileExists($sFile) Then&lt;br /&gt;
        MsgBox(64, &amp;quot;완료&amp;quot;, &amp;quot;이미지가 저장되었습니다:&amp;quot; &amp;amp; @CRLF &amp;amp; $sFile)&lt;br /&gt;
    Else&lt;br /&gt;
        MsgBox(16, &amp;quot;오류&amp;quot;, &amp;quot;이미지 저장에 실패했습니다.&amp;quot;)&lt;br /&gt;
    EndIf&lt;br /&gt;
EndFunc&lt;br /&gt;
&lt;br /&gt;
Func ClearImage()&lt;br /&gt;
    GUICtrlSetImage($hPic, &amp;quot;&amp;quot;)&lt;br /&gt;
    GUICtrlSetData($lblInfo, &amp;quot;클립보드에 이미지가 없습니다&amp;quot;)&lt;br /&gt;
    &lt;br /&gt;
    If $hImage &amp;lt;&amp;gt; 0 Then&lt;br /&gt;
        _GDIPlus_ImageDispose($hImage)&lt;br /&gt;
        $hImage = 0&lt;br /&gt;
    EndIf&lt;br /&gt;
    &lt;br /&gt;
    If $hBitmap &amp;lt;&amp;gt; 0 Then&lt;br /&gt;
        _WinAPI_DeleteObject($hBitmap)&lt;br /&gt;
        $hBitmap = 0&lt;br /&gt;
    EndIf&lt;br /&gt;
    &lt;br /&gt;
    ; 임시 파일 삭제&lt;br /&gt;
    FileDelete(@TempDir &amp;amp; &amp;quot;\clipboard_temp.bmp&amp;quot;)&lt;br /&gt;
EndFunc&lt;br /&gt;
&lt;br /&gt;
Func Cleanup()&lt;br /&gt;
    ClearImage()&lt;br /&gt;
    &lt;br /&gt;
    ; 임시 파일 정리&lt;br /&gt;
    FileDelete(@TempDir &amp;amp; &amp;quot;\clipboard_temp.bmp&amp;quot;)&lt;br /&gt;
EndFunc&lt;br /&gt;
&lt;br /&gt;
; 클립보드에서 데이터 가져오기 함수&lt;br /&gt;
Func _ClipBoard_GetDataEx($iFormat)&lt;br /&gt;
    If Not _ClipBoard_Open(0) Then Return SetError(1, 0, 0)&lt;br /&gt;
    &lt;br /&gt;
    Local $hData = _ClipBoard_GetData($iFormat)&lt;br /&gt;
    _ClipBoard_Close()&lt;br /&gt;
    &lt;br /&gt;
    Return $hData&lt;br /&gt;
EndFunc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Devcafe</name></author>
	</entry>
</feed>