제목 : 공개 - 드래그 예제
빨강모자어제의 일을 상기하면서 공개해 봅니다
공개라니까 매우 불편하고 거창하지만
그냥 사용해 봅니다.
무슨 드래드앤드랍이 특별한 사람들만의 전유물은 아님니다.
회우님께서 언급하셨듯이 조금만 찾으면 금새 찾아집니다.
그것을 어찌 활용하냐는 것이 개개인의 숙련도일 것이라 여겨집니다.
예제.
실행된 화면입니다. 아이콘을 보시다시피 오토잇으로 예제를 편집했습니다.
전체 32라인 코딩된 소스코드 편집화면입니다.
그 어떠한 시스템의 접근이나 변경이 없음을 확인할 수 있습니다.
드래그의 결과화면입니다.
이는 연구자가 오류값등을 확인하여 적절하게 활용코저 하거나, 또는 사용자에게 알림을 위한 목적등으로 활용을 할 수 있을 것입니다.
컴파일된 모습입니다. UPX 압축을 하지 않았습니다. 내부 압축만으로 빌드된 것입니다.
컴파일된 파일의 실행화면이미지입니다. 사용자지정 아이콘이 표시됨니다.
위 컴파일된 파일의 바이러스토탈 검사 화면입니다.
활용의 예::
모자의 경우 주로 컴파일하지 않은 상태에서 즉각적인 대응을 위해
명령어의 조합을 띄우고 즉시 실행하여 결과의 값만 확인한 후 대응하는 패턴을 활용합니다.
소스 간략 설명:
기본함수 불러오기
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
화면에 표시될 창을 만듬니다.
$Form1 = GUICreate("파일 드래그 앤 드랍 예제", 550, 53, -1, -1, -1, $WS_EX_ACCEPTFILES)
창에서 드래그 이벤트를 사용할 수 있도록 사전 정의합니다.
GUISetOnEvent($GUI_EVENT_DROPPED, "Drag")
버튼을 하나 만듬니다.
$button = GUICtrlCreateButton("",520, 24, 20, 20, $BS_ICON)
입력란을 하나 만듬니다.
$Input1 = GUICtrlCreateInput("[ ... ]", 8, 24, 510, 21)
이 입력란에 드래그를 활성화 합니다.
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
마우스를 올리면 보이는 툴팁을 정의합니다.
GUICtrlSetTip(-1,@CRLF & "파일을 드래그하세요", "여기에", 1, 1)
라벨을 하나 만듬니다.
$Label1 = GUICtrlCreateLabel("파일을 드래그 앤 드롭", 8, 8, 220, 16)
화면에 창을 나타냄니다.
GUISetState(@SW_SHOW)
창의 위치를 최상위로 고정합니다. <- 파일을 드래그하기 위해서는 다른 창이 반드시 필요하므로 ..
WinSetOnTop("파일 드래그 앤 드랍 예제", "", 1)
함수를 정의합니다. 이는 흔히 활용하는 오류값을 콘솔에서 볼 수 있도록 출력을 지정합니다.
Func Drag()
ConsoleWrite("ID: "&@GUI_DRAGID & " File: "&@GUI_DRAGFILE &" Drop: "&@GUI_DROPID&@CRLF)
EndFunc
종료이벤트시 실행을 정의합니다.
Case $GUI_EVENT_CLOSE
버튼을 클릭했을때 ( 기본값 ) 실행을 정의합니다.
Case $button
메시지박스로 알림을 표시해 줌니다. 10초간 유지한 후 사라짐니다.
MsgBox(262208,"결과확인","ID: "&@GUI_DRAGID&@CRLF&" File: "&@GUI_DRAGFILE&@CRLF & " Drop: " & @GUI_DROPID & @CRLF, 10)
무지하게 간단하고도 활용도가 높은 방법이기는 합니다만
적절하게 활용할 수 있도록 하는 것은 연구자의 몫일 것입니다.
이러하듯이 간단하지만 간단하지 않음으로하여
때로는 불편함이 초래되게 되고, 또는 편리함을 가져오기도 합니다만
선택은 엔드유저의 몫일 듯 합니다.
맘에들지 않는다면 사용을 안하시면 됨니다.
되먹지 못하게 잘했네 못했네 감놔라 배놔라 할 이유가 그 어디에도 없을 것입니다.
반면 유용할 것 같고 관심이 간다면 피드백을 통하여
" 이러이러한 부분은 요렇게 수정하면 편리할 듯 합니다... "
등의 피드백을 통하여 일진할 수 있지 않을까요?
나의 아이디어가 아닌 타인것을 자기것으로 이름만 바꾼다하여
자기의 것이 되지 않음은 모두가 인지하실 것이라 여겨짐니다.
간략하게나마 드래그앤드롭의 예제를 살펴 봤습니다.
이 게시글에 사용한 소스코드와 아이콘을 그대로 공개해 드림니다.
관심이 있으신 분만 내려받으시어 도전해 보시기 바람니다.
푸어베이직이나 오토핫도 가능하고 다른 언어로도 또한 가능한 기능입니다..
참고하세요...............
시원함과 함께 편안함으로 자리하세요~~~~
꾸벅~~
추가: 코딩시간보다 글쓰는 시간이 곱절은........ ^_^
선학님 유지의 글중에서........
댓글 [21]
지니제스트
- 2023.07.02
- 10:42:37
;~ #include <EditConstants.au3>
;~ #include <GUIConstantsEx.au3>
;~ #include <StaticConstants.au3>
;~ #include <WindowsConstants.au3>
;~ #include <ButtonConstants.au3>
Global Const $WS_EX_ACCEPTFILES = 0x00000010
Global Const $BS_ICON = 0x0040
Global Const $GUI_EVENT_DROPPED = -13
Global Const $GUI_DROPACCEPTED = 8
Global Const $GUI_EVENT_CLOSE = -3
위에 인클루드가 많아서 필요한 상수만 끄집어 내서 사용하시면 좀더 리소스를 줄일 수 있지 않을가 생각해봅니다. ^^
레마클로
- 2023.07.02
- 11:26:17
Me too.
오토핫키 초보자인 저도 간단 예제 올려봅니다.
;Drop Picture Files in this Window.ahk
Gui, Add, Picture, 0x1000 vMyPic w640 h480, `n`n`n`t`t`tDrop Picture Files in this Window
Gui, Show,, Drop Picture Files in this Window
Return
GuiDropFiles:
GuiControl,, MyPic, %A_GuiEvent%
Return
GuiClose:
ExitApp
Return
감사합니다