매크로

2015.02.13 23:08

[디자인] GUI 스킨

조회 수 11147 추천 9 댓글 214

https://i.imgur.com/qx6jZ07.png

블로그 글 복사하면, 티의 이야기(ㅎㅎ)가 금지어라서 이미지와 다운로드링크를 새로 적어야하더군요.

떄문에 글이 좀 난잡해졌습니다. 원본 글 읽으시길 추천합니다 http://me2.do/GoveZZiz



오토핫키는 GUI(Graphical User Interface) 를 쉽게 사용할 수 있습니다.

단순히 입력명령어들로만 매크로를 제작할수있지만, 보다 직관적인 프로그램을 위해서는 인터페이스가 제공되어야겠죠

또한 기본 윈도우 외관에서 벗어나, 아래처럼 새로운 스킨들로 개성있는 인터페이스창을 만들수있습니다.


https://i.imgur.com/9iRHzYf.gif

?

필요한 파일


ㅡ USkin.dll 파일이 필요합니다 여기를 클릭해 다운로드하세요.

ㅡ 테마(스킨)파일이 필요합니다, 위 링크에 'skin.zip' 을 다운받으세요.

ㅡ 라이브러리 함수가 필요합니다. AutoHotkey/Lib 폴더 혹은 자신의 소스코드와 동일한 경로에 두세요.


SkinForm(Param1 = "Apply", DLL = "", SkinName = ""){
? ? if(Param1 = Apply){
? ? ? ? DllCall("LoadLibrary", str, DLL)
? ? ? ? DllCall(DLL . "\USkinInit", Int,0, Int,0, AStr, SkinName) ; For?유니코드
??????? ;DllCall(DLL . "\USkinInit", Int,0, Int,0, Str, SkinName) ; For?ANSI
??? }else if(Param1 = 0){
? ? ? ? DllCall(DLL . "\USkinExit")
? ? ? ? }
}


라이브러리


GUI 창에 적용하기


USkin.dll 은 기본 GUI의 외관 리소스파일들을 교체함으로서, 오토핫키 문법에 아무런 영향을 주지 않습니다.

따라서, DllCall로 USkin.dll의 함수를 꺼내쓰고 기존의 코드는 수정할것이없습니다.

스크립트 최상단에 아래의 코드를 입력하세요, 모든 GUI의 리소스파일이 테마파일로 교체됩니다.


SkinForm(Apply, A_ScriptDir . "\USkin.dll", A_ScriptDir . "\스킨파일명.msstyles")


GUI창을 닫을떄,?핸들이?새는것을 막기위해 USkin.dll 을 종료해야합니다


SkinForm(0)


아래 코드는 'Milkymac.msstyles' 스킨을 사용하는 GUI 예제입니다.


#NoEnv
#SingleInstance force
SkinForm(Apply, A_ScriptDir . "\USkin.dll", A_ScriptDir . "\Milikymac.msstyles")
OnExit, GetOut
Gui, add, button,xm w100 h40, Button
Gui, add, edit, xm y+20 w100 h20, Edit
Gui, add, listbox,xm y+20, ListBox
Gui, add, checkbox,xm y+20, checkbox
Gui, add, DDL, xm y+20, DropDownList
Gui, Show, AutoSize, Test
return

GetOut:
GuiClose:
Gui, Hide
SkinForm(0)
ExitApp
return

SkinForm(Param1 = "Apply", DLL = "", SkinName = ""){
? ? if(Param1 = Apply){
? ? ? ? DllCall("LoadLibrary", str, DLL)
? ? ? ? DllCall(DLL . "\USkinInit", Int,0, Int,0, AStr, SkinName)
? ? }else if(Param1 = 0){
? ? ? ? DllCall(DLL . "\USkinExit")
? ? ? ? }
}


예제


  • 뎅뎅 2015.02.13 23:19

    앗.. 방금 gui쪽 거의 마무리중인데... 기대하겠습니다 좋은자료 감사합니다 ^^...

  • profile
    퓨이러스 2015.02.14 12:47

    스킨 적용도 가능한 거였군요? 흐흐 저도 한번 적용해 보고 싶네요ㅎㅎ

  • profile
    예지력1 2015.02.14 13:40
    어제 글쓰던중에 오토핫키 새 컴파일러 나왔다길래 그거 테스트하느라 글작성을 완료하지못했습니다.
    오늘 저녁에 마저 작성하도록 하겠습니다
  • profile
    예지력1 2015.02.15 13:27

    글 작성완료했습니다.

    티이야기가 금지어라서 블로그 글 복붙이 불가능하고 일일이 링크 수정해줘야하네요 ㅜ

    원본 글 읽으시길 추천합니다 http://me2.do/GoveZZiz


  • Hangoon 2015.02.16 11:08

    예지력님 좋은 강좌 감사합니다 ^^

    올려주신 예제와 함수 dll을 적용해서 한번 테스트 해봤는데 오토핫키 B 버전에서는 잘안되는 것 같더라구요

    혹시 오핫 버전에 영향을 받을 수 있는 부분인가요? 그렇담 B버전에서는 방법이 없는 것인지 ㅠㅠ 막상 예지력님이 위에 게임툴로 올려주신 프로그램의?gui보니까 너무 예뻐서 적용하고 싶은 욕심이 드는데 잘 안되니 막막하네요 ㅎㅎㅎㅎ

  • profile
    예지력1 2015.02.16 14:05
    오토핫키 L 버전을 사용합니다!
    아직까지도 베이직버전을 사용하시는분들이 의외로 많은게 신기하네요ㅋ
  • profile
    퓨이러스 2015.02.16 23:19

    예제 파일을 실행해도 아무 반응이 없는 건 무슨 문제일까요? ㅡ,ㅡ;;;

  • profile
    예지력1 2015.02.16 23:47
    오토핫키L 유니코드 32비트 버전이 맞으신가요?
    USkin.dll 과 Milkymac.msstyles 파일 제대로 로케이트되있나요?
  • profile
    퓨이러스 2015.02.16 23:51
    넵 L버전 32비트이고 dll과 스킨 파일은 예제 파일과 같은 위치에 놓고 실행해 봤습니다
  • profile
    예지력1 2015.02.17 00:07

    오토핫키L 설치할때 유니코드 32비트로 선택설치한게 맞으신지 확인바랍니다, 맞으시면 아래 코드를 사용해보세요


    hMod := DllCall("LoadLibrary", str, A_ScriptDir "\USkin.dll")
    a := DllCall( "USkin.dll\USkinInit", Int,0, Int,0, AStr, A_ScriptDir "테마파일명.msstyles")
    OnExit, QuitScript
    Gui, Font, s10, Consolas
    Gui, Add, Button, , test
    Gui, Add, Radio, xm Checked, Radio1
    Gui, Add, Radio, x+30, Radio2
    Gui, Add, Checkbox, x+30, CheckBox1
    Gui, Add, Edit, xm w300, test
    Gui, Add, Tab2, , Tab1|Tab2|Tab3
    ?Gui, Add, ListView, x+30 y+30 w200 h100 Grid, Col1|Col2|Col3
    ?Gui, Add, DDL, , Item1||Item2|Item3
    Gui, Add, StatusBar, , StatusBar Text
    Gui, Show,, Sample GUI
    return
    QuitScript:
    GuiClose:
    GuiEscape:
    ?Gui, Hide
    ?DllCall( "USkin.dll\USkinExit" )
    ?DllCall("FreeLibrary", UInt, hMod)
    ?OnExit
    ?ExitApp
    Return
  • profile
    퓨이러스 2015.02.17 00:20
    에고... 죄송합니다 제가 잘못 알고 있었네요
    L버전 64비트였습니다 ㅡ,ㅡ;; 32비트로 바꾸고 돌리니 잘 적용됩니다~
    제대로 확인을 안하고 말씀드려서 혼동을 드렸네요~
  • profile
    예지력1 2015.02.17 00:23
    네ㅋㅋ 잘 활용하세요~ 위 방법말고도 다른방법이 하나 더 있는데 궁금하시면 포럼에 제가 Soft 라는 아이디로 작성한 글 확인하시면됩니다.
  • profile
    퓨이러스 2015.02.17 00:26

    또 궁금한게 한가지가 있습니다

    스킨을 적용하고 보면 상하좌우에 조금씩 배경이미지가 계속 남아있습니다

    창을 다른 곳으로 움직여도 최초 생성했던 위치의 배경이 아래 이미지 처럼 남아서

    다른 곳으로 움직여도 없어지지 않네요

    혹시 뭐가 문제인지 아시나요?

    VCcg3MJ.png

  • profile
    예지력1 2015.02.17 00:36
    Gui 관련 커맨드 최상단에 아래 코드 추가하고
    Gui, +LastFound

    구이 로드 끝난다음에 Winset, Redraw
    그리고 Dll파일 닫으세요 DllCall( "USkin.dll\USkinExit" )
  • 핸콕 2015.03.03 14:32

    저도 스킨에 따라 border부분이 저런 현상이 생기는데요~(Maclion3.msstyles)

    (그런데 이건 오토핫키의 문제가 아니라 스킨자체의 문제같은데요..보더를 투명으로 처리했는데 에러가 난거같은..)

    gui 명령 시작점에 추가 : Gui, +LastFound
    gui 명령 마지막에 추가 : Winset, Redraw
    dllcall...은 어디에 넣으라는 건가요^^;

  • profile
    예지력1 2015.03.03 22:59
    구이 관련 스트립트는 아래의 예로 끝나야합니다
    Gui, ~
    Winset, Redraw
    DllCall 파일닫기
  • 핸콕 2015.03.03 12:59

    솔까말..테일스타에 오토핫키 강의를 올려주신데 감사하는 마음으로 추천과 댓글을 드렸습니다..

    그런데 이번강의를 한번 따라했더니..이건..머..그냥..대박이네요..어떻게 이런 강의를 준비하셨는지

    (소스에..강의에..예제에..실습에..확인까지...)

    오핫키 초급수준..딱 필요한만큼만 배우고 닫았는데..예지력님 강의가 너무 환상적이라..아..학구열이 불타오르네요ㅋ

  • 핸콕 2015.03.03 13:40

    질문좀 드릴게요^^

    1. skinform 을 잘석할때 띄어쓰기까지 해야 되던데(마침표 앞뒤에 띄어쓰기를 안했더니 오류가 나더라구요^^)..

    ? ?이것도 어떤 규칙인가요^^?

    2. 제가 라이브러리에 대한 개념이 없어서요^^

    ? 올려주신 skimform(...) 라이브러리를 매클 소스에 같이 넣어도 되고, 매클과 같은 폴더에 별도로 저장해도 되던데..

    ? 맞나요^^? 그럼 제가 지금 매클소스 안에 만들어 쓰는 일명 사용자함수(이미지서치,마우스클릭)가 라이브러리라는 개념인가요^^?

    3. 제 공개형 매클에 예지력님이 올려주신 스킨을 사용한다면, 혹시 저작권법에는 문제가 없을까요^^?

  • profile
    예지력1 2015.03.03 23:04
    1. SkinForm 은 제가 편하게 쓰려고 만든 라이브러리함수입니다, 띄어쓰기 어디부분을 말씀하시는건지?
    A_ScriptDir " 이 부분 말씀하시는거라면 경로를 누적해서 계산하려고하기때문입니다

    2. 맞아요, 이미지서치, 마우스클릭은 오토핫키 내장라이브러리, SkinForm은 제가 제작한 외부의 추가적인 라이브러리입니다.

    3. 저작권법은 문제가없습니다. 테마파일은 원래 배포되던 테마들이고, Dll파일은 저와 외국포럼에서 만난 사람과 같이 개발한 오픈소스 함수에요. 라이브러리는 제가 제작했고요, 애초에 오픈소스로 무료배포한거라 그냥 크레딧표시만 해주시면 감사하겠네요
  • orekaaa 2015.03.04 00:21
    저도 퓨어러스님과 같은 증상인데요.
    써주신 예제에
    a := DllCall( "USkin.dll\USkinInit", Int,0, Int,0, AStr, A_ScriptDir "테마파일명.msstyles")
    OnExit, QuitScript
    Gui, +LastFound
    Gui, Font, s10, Consolas
    Gui, Add, Button, , test
    Gui, Add, Radio, xm Checked, Radio1
    Gui, Add, Radio, x+30, Radio2
    Gui, Add, Checkbox, x+30, CheckBox1
    Gui, Add, Edit, xm w300, test
    Gui, Add, Tab2, , Tab1|Tab2|Tab3
    Gui, Add, ListView, x+30 y+30 w200 h100 Grid, Col1|Col2|Col3
    Gui, Add, DDL, , Item1||Item2|Item3
    Gui, Add, StatusBar, , StatusBar Text
    Gui, Show,, Sample GUI
    return
    QuitScript:
    GuiClose:
    GuiEscape:
    Gui, Hide
    Winset, Redraw
    DllCall( "USkin.dll\USkinExit" )
    이렇게 넣었는데도 동일증상이네요^^;; 제가 잘못 넣은건가요??
  • profile
    예지력1 2015.03.04 00:31

    구이 로드 끝난다음에 닫아주셔야해요. Return 으로 구이 나타내고 닫지않고 바로 끝내주셨네요

    Gui, Show,, Sample GUI
    Winset, Redraw
    DllCall( "USkin.dll\USkinExit" )
    return

  • orekaaa 2015.03.04 10:19
    아 리턴은 했습니다. 길어서 짜른건데 오해가 있었나보네요^^;;

    hMod := DllCall("LoadLibrary", str, A_ScriptDir "\USkin.dll")
    a := DllCall( "USkin.dll\USkinInit", Int,0, Int,0, AStr, A_ScriptDir "테마파일명.msstyles")
    OnExit, QuitScript
    Gui, +LastFound
    Gui, Font, s10, Consolas
    Gui, Add, Button, , test
    Gui, Add, Radio, xm Checked, Radio1
    Gui, Add, Radio, x+30, Radio2
    Gui, Add, Checkbox, x+30, CheckBox1
    Gui, Add, Edit, xm w300, test
    Gui, Add, Tab2, , Tab1|Tab2|Tab3
    Gui, Add, ListView, x+30 y+30 w200 h100 Grid, Col1|Col2|Col3
    Gui, Add, DDL, , Item1||Item2|Item3
    Gui, Add, StatusBar, , StatusBar Text
    Gui, Show,, Sample GUI
    return
    QuitScript:
    GuiClose:
    GuiEscape:
    Gui, Hide
    Winset, Redraw
    DllCall( "USkin.dll\USkinExit" )
    DllCall("FreeLibrary", UInt, hMod)
    OnExit
    ExitApp
    Return
    원본예제에 저부분만 추가했는데 적용이 안되네요.
  • 핸콕 2015.03.04 10:59
    예지력님, 저도 위와 같은 문제를 아직 해결하지 못하고 있는데요..
    이건 아무래도, 스킨자체의 문제이지 않나요?
    특정스킨(ex:Maclion3.msstyles)을 사용시 border부분에 저런 깨짐 현상이 발생하거든요..

    그리고 orekaaa님..주제넘지만;예지력님 말씀은 gui끝에 함수 두줄을 넣으라고 하시는데요...
    Gui, Show,, Sample GUI
    Winset, Redraw
    DllCall( "USkin.dll\USkinExit" )
    return
  • profile
    예지력1 2015.03.04 11:05
    @orekaaa / 핸콕님 말씀대로 하셔야됩니다 return으로 구이 커맨드 닫지말고요

    @핸콕 / 윈도우 에어로기능이 켜져있으신가요? 켜져있으면 자꾸 테마에 에어로입힐려고 깨지는 경우가 있어요

    테마파일 문제는 아닌걸로압니다!
  • 핸콕 2015.03.04 11:46
    제가 win7을 사용하다보니 테마가 모두 Aero테마입니다^^ㅋ 그런데 "기본 및 고대비테마"로 선택에도
    특정 테마 사용시 gui 테두리 깨짐은 같구요
    좀더 테스트를 해보니, 정확히는 처음에 gui가 실행될때는 안깨지는데, gui이동시 테두리 깨짐입니다,

    예지력님의 프리뷰.exe로 테스트 해본결과(gui 실행후, 이동시 테두리 깨짐)
    gui 이동시 테두리가 깨지는 msstyles파일은..23개 파일중 12개입니다^^;(그중에 쓰고싶은게..maclion3);
    ayofe, hana, paperAGV, whitegray, whitered2, woodwork, bluepaper, fanta, maclion3, milk, somaticalbino, stomp,
  • profile
    예지력1 2015.03.04 12:01
    에어로는 특정테마가 아니라 윈도우 시각효과 설정에서 온오프가 가능한 옵션이에요

    저는 안깨지는데 컴퓨터마다 다른가보네요. 외국포럼에서도 dll파일을 닫은뒤부터는 깨진다는 리포트는없었는데..

    테두리가 많이 거슬리신다면,
    테두리를 구이커맨드로 없애든지 winmove로 처음 크기를 늘려놓고 구이 나타내는 부분에는 작게하는 방법을 쓰셔야겠네요..!
  • profile
    GOLD 2015.03.07 21:03

    버튼 색깔을 바꿀수는 없을까요?

  • profile
    예지력1 2015.03.07 23:43
    기본명령어나 코드몇줄로 끝나는게 아니고, gdi 함수나 다른 라이브러리 함수 사용하셔야해요
    복잡합니다
  • profile
    GOLD 2015.03.08 03:19

    그런데 이 스킨이 컴퓨터에 따라 적용이 안될수도있나요? 아무리해도 안되네요

    프리뷰올려주신거 다운받아서 NEXT눌러도 창 ui는 아무변화없구요

    혹시나 싶어서 vm웨어 다운받아서 다른환경으로도 실행해봣는데 똑같네요 왜이렇죠?

  • profile
    예지력1 2015.03.08 10:49
    dll 파일 스크립트파일과 같은 경로에 두셔야합니다, 32비트 아키텍처 dll이고요
  • profile
    GOLD 2015.03.10 01:35
    해결됬습니다 ANSI코드로 하니까 되네요
  • 햇볕바라기 2015.03.09 00:13

    블로그 잘 보고있습니다.

    오토핫키 이제 시작하였지만 블로그 보고 열심히 공부하고 있습니다.

    좋은 자료 감사합니다.

  • Rasu 2015.04.11 14:45

    오오 감사합니다. 보니 해볼까 하는 생각이 드네요.

  • 몽땅아리 2015.04.12 14:41

    좋은 강좌 감사합니다.


  • profile
    빨간늑대 2015.04.18 11:45

    잘배웠습니다. 알찬정보 감사드립니다.

  • Rabbit 2015.04.23 09:13

    @예지력

    예지력님 근데요.. 이거 하고 오토핫키에 있는 컴파일로 돌리고 나서 다른 PC에서 실행하면 스킨없이 그냥 실행되던데요..

    원래 그러는건가요..? 아니면.. 뭐를 따로 해야 하나요..?

  • profile
    예지력1 2015.04.27 11:26
    스킨파일을 exe파일에 내장하셔야하지요. 다른컴퓨터에서는 uskin.dll 과 스킨파일이 없을테니까요
  • 뺀질이 2015.04.23 21:40

    잘보고 갑니다~ 저 좋은강죄있음 부탁드려봄

  • roam 2015.04.28 05:11

    구이 ...........

  • 스마트찬 2015.04.29 20:37

    역시 예지력님 멋잇어용!

  • 하프엘프 2015.05.05 04:49

    좋은자료 감사합니다.

  • profile
    우하하하하 2015.05.06 13:24

    와 엄청나다 진짜 이런거 한번해보고싶은데 엄두가나안나네요?

  • 빵삼이 2015.05.09 01:14

    항상 좋은글 감사합니다.

  • 체리마키아또 2015.05.10 13:43

    아... 머지하고 봤는데 무슨얘기들 하시는지..너무 어려워요?ㅠㅠㅋ

  • 트꾸비 2015.05.17 17:26

    gui 만들어 스킨 입히는거 같은데요.

  • 화나면짖는개 2015.05.18 07:27

    와;; 스킨이 깔끔하네여

  • 사랑에지치다 2015.05.21 20:00

    감사합니다 대단하시네요

  • 필고 2015.05.23 01:56

    갈수록 어려워지네요 ㅠ

  • CROBA 2015.06.02 12:51

    구이 프로그래밍도 되네 ㄷㄷ

  • awds22 2015.06.02 22:58

    허 별에별게 다있네요


List of Articles
제목 글쓴이 최근변경 추천
[디자인] GUI 스킨 214 예지력1 2023.11.03 9/0
내장파일 설치 가상화 133 예지력1 2023.02.05 27/0
FileInstall 파일을 설치하기 123 예지력1 2023.03.17 12/0
작성중인 오토핫키 강좌글입니다. 523 예지력1 2024.02.08 56/0
Board Pagination Prev 1 2 3 Next
/ 3

전체 최신 인기글

전체 주간 인기글