수정본.zip

 

ㅡ 뮤텍스

ㅡ 클래스네임

ㅡ 자동으로 관리자권한

ㅡ 아이콘변경

'프로그래밍 > Archive' 카테고리의 다른 글

MS Office Style Gui 프로토타입  (4) 2015.10.09
GetActiveObjects 활성중인 객체를 불러온다  (0) 2015.03.04
L 유니코드32비트 1.1.19.03  (11) 2015.02.21
암호화 , 복호화 프로그램  (17) 2015.02.19
Animate gif GUI  (0) 2015.02.19
메모리최적화 MemoryInfo  (0) 2015.02.15
  1. 까망 2015.02.21 16:13 신고

    감사합니다
    잘 쓸게요 ^^

  2. 호이 2015.02.24 17:04 신고

    어떻게 사용하는건가요 ?

    더블클릭해도 무반응인데 ㅎㅎ

    • BlogIcon 예지력 2015.02.24 20:42 신고

      이게 뭔지는 아시는건가요?;;
      내부수정을 거친 오토핫키 원본파일입니다

  3. 오토핫키초보 2015.03.12 09:04 신고

    안녕하세요
    C프로그래밍에 대한 지식이 없는 상태에서 오토핫키 오픈소스를 직접 컴파일할려고 하다보니 자꾸 에러만 뜨고 잘 안됩니다 ㅠㅠ
    현재 운영체제는 윈7 64비트구요. Microsoft Visual C++ 2010 Express를 설치했습니다.
    에러메시지는 아래처럼 뜨는데 해결방법 좀 알려주세요.
    AutoHotkeyx.vcxproj : warning : 프로젝트 파일 'AutoHotkeyx'에 참조된 'x64' 플랫폼을 찾을 수 없습니다. 이 플랫폼을 '%VCTargetsPath%\Platforms\x64' 아래에 설치했는지 확인하십시오.
    source\lib_pcre\lib_pcre.vcxproj : warning : 프로젝트 파일 'lib_pcre'에 참조된 'x64' 플랫폼을 찾을 수 없습니다. 이 플랫폼을 '%VCTargetsPath%\Platforms\x64' 아래에 설치했는지 확인하십시오.
    warning C4819: 현재 코드 페이지(949)에서 표시할 수 없는 문자가 파일에 들어 있습니다. 데이터가 손실되지 않게 하려면 해당 파일을 유니코드 형식으로 저장하십시오.
    LINK : fatal error LNK1123: COFF로 변환하는 동안 오류가 발생했습니다. 파일이 잘못되었거나 손상되었습니다.

    • BlogIcon 예지력 2015.03.12 22:19 신고

      지금 제가 올린버전 이후로 최신버전은 2010으로 빌드안되는걸로 알고있는데
      인코딩문제니까 솔루션 타입에서 문자집합을 멀티바이트로 바꾸고 빌드해보세요

  4. 오토핫키초보 2015.03.13 17:38 신고

    최신버전인 1.1.20.02 소스코드는 아무리 해도 자꾸 오류가 납니다.
    그래서 가지고 계신 구버전 1.1.19.03 원본 소스 파일을 올려주시면 정말 감사하겠습니다
    현재 홈페이지에는 최신버전밖에 없어서요.... ㅠㅠ 부탁드립니다

    • BlogIcon 예지력 2015.03.13 19:18 신고

      저도 구버전 소스는 없네요. 이거 빌드하고 며칠뒤에 포맷해서요
      그나저나 구버전이시라면 위 파일 사용하시면 될텐데요

  5. 별목 2015.04.30 09:42 신고

    컴파일러는 수정된 버전 없으신가요?
    컴파일 안된 상태로 사용시에는 별 문제가 없는데 컴파일을 하면 잡히내요.

  6. 가나다 2015.07.19 21:57 신고

    뮤텍스... 읽다가읽다가 전혀 모르겠어서 흘러들어왔어요.
    다른 강의도 몇번 정독하며 읽었네요
    아주 잘 정리해주셔서 감사합니다.^^

  7. 궁금합니다. 2016.06.08 21:39 신고

    클래스네임 바꾸는 방법이 궁금합니다.
    script2.cpp 파일에서 바꾸는건가요? 자세히좀 알려주시면 감사합니다.

 

암호/-복호화

 

무료 암호화/-복호화 프로그램입니다, 미국 정부의 표준 암호화 알고리즘 AES외에도 3DES,RC 등 다양한 알고리즘을 제공합니다!

 

드래드드롭을 지원해서 파일을 위 박스로 끌어서 파일의 내용을 불러올수있고, 사용자가 직접 텍스트를 입력할 수도 있습니다.

 

암호화 또는 복호화된 텍스트는 사용자의 설정에 따라 자동으로 클립보드로 복사가 가능합니다.

 

다운로드 아무런 기능제약이 없는 무료 프로그램입니다

 

암호-복호화.zip

 

 

바이러스가 없는 안전한 파일입니다

'프로그래밍 > Archive' 카테고리의 다른 글

GetActiveObjects 활성중인 객체를 불러온다  (0) 2015.03.04
L 유니코드32비트 1.1.19.03  (11) 2015.02.21
암호화 , 복호화 프로그램  (17) 2015.02.19
Animate gif GUI  (0) 2015.02.19
메모리최적화 MemoryInfo  (0) 2015.02.15
로그인 폼디자인  (0) 2015.02.05
  1. fff46 2015.03.02 18:22 신고

    오토핫키에 암호화된 문자열을 넣어도 인식하나요?

    • BlogIcon 예지력 2015.03.03 22:46 신고

      네 가능하죠, 하지만 언래 문자열을 출력할때는 복호화시키는 과정을 거쳐야하겠죠

  2. abedddd 2015.05.02 12:23 신고

    암호화 복호화를 해주는 프로그램인가요?
    만약 맞다면 반대로 풀수있는 프로그램은 없는거죠?ㅠ

  3. ㅁㅁ 2015.07.08 21:34 신고

    클립보드 복사하고
    어떻게 해요..?
    사용방법을 모르겧어요.

  4. 고맙습니다 2015.10.28 19:15 신고

    잘 사용하겠습니다. 혹시 이런 종류 프로그램에서 LEA 알고리즘을 지원하는 것이 있을까요?

  5. 안녕하세요 2015.12.25 12:47 신고

    예를 들어 Msgbox, 반갑습니다 를 AES256으로 암호화 하고
    암호화된 것을 SciTe4편집기에 복붙하여 실행하면 오류가 나는데
    암호화된 코드로 Ahk실행시 "Msgbox, 반갑습니다" 구현되게 하려면
    암호화된 스크립트 내에 '이 스크립트는 Aes256방식을 사용하여 나타내겠다' 라는 함수같은걸 따로 넣어줘야하는가요?

    • BlogIcon 예지력 2015.12.25 12:50 신고


      근데 이걸 자꾸 소스코드 암호화랑 혼동하시는 분들이 굉장히 많네요 특히 오토핫키에서요, 그런것과는 연관이 없는데 말이죠 @_@

  6. 임찬호 2016.03.13 23:09 신고

    암호화된스크립트내에서 이스크립트는 Aes256방식을 사용하여 나타내겠다 예제를 알려주실수있으신가요?
    정확히 사용법이없어서 사용을못하겠습니다.

  7. 2016.03.21 04:01

    비밀댓글입니다

  8. 이민호 2016.04.17 12:27 신고

    저도 암호화된 스크립트 내에서 aes256방식으로 사용하여 나타내겠따는 예저를 알려주실수있나여 찾아봐도 없는거같네요 프로그램은 훌륭합니다!!

  9. encryptolocker 2017.03.26 21:09 신고

    3des는 어떻게 구현하였나요?2개의 암-복호화키가 필요할탠데..

  10. 안녕하세요 2017.04.17 19:52 신고

    사용방법을 전혀 모르겠는데 간단한 예시같은게 있을까요?

  11. 강선봉 입니다 ksdsun123@gmail.com 2017.09.22 22:58 신고

    저기 지금 컴퓨터가 관리자를하고있어서 이것도 저것도 못하고있습ㄴ다
    비밀번호룰좀 가르쳐주시던지 암호를 없애주시던지 부탁드립니다

  12. ksdsun123@gmail.com 2017.09.22 23:17 신고

    암호화 복호하를 아까전에 토랜토에서 다운받았다가 제가 잘모르고 압축을 풀었나보네요 사실 사용방법도 모르는데 신기해서 샀다가..
    어떻게해야되나요? 포맷할까요? 참 난감합니다.. 부탁드려요

  13. soh1313 2018.01.22 18:12 신고

    오토핫키 맞춤으로는 없나용?ㅇㅅㅇ

 

Language : AutoHotkey_H

Author : PhiLho, http://www.autohotkey.com/board/topic/17722-show-animated-gifs-in-your-gui/

Function : Animates gif on GUI, gif 파일 애니메이션을 gui안에 내장한다

Source : http://www.autohotkey.com/board/topic/17722-show-animated-gifs-in-your-gui/

 

Lib

Animate GIF GUI.zip

'프로그래밍 > Archive' 카테고리의 다른 글

L 유니코드32비트 1.1.19.03  (11) 2015.02.21
암호화 , 복호화 프로그램  (17) 2015.02.19
Animate gif GUI  (0) 2015.02.19
메모리최적화 MemoryInfo  (0) 2015.02.15
로그인 폼디자인  (0) 2015.02.05
파일,폴더 가상화 Virtualization  (14) 2015.02.03

 

미니 에디터

사용법이 말할것도 없을정도로 간단합니다! 명령어 적으시고 실행누르시면 소스코드(.ahk) 저장 할 필요없이 실행됩니다.

강의글에서 사용하는 예제나, 다른 흥미로운 코드를 테스트해볼떄 지저분하게 코드파일을 계속해서 저장하지 않아도 됩니다.

 

네이버가 제공하는 프로그래머용 글꼴 '나눔고딕코딩' 을 기본으로 사용합니다.

그리고 드래그드롭이 가능하니, 불러오기 할 필요없이 소스코드를 드래그드롭하시면 자동으로 파일을 불러옵니다.

 

또한, 임시코드보관함을 사용해서 수정전의 코드를 임시로 보관하거나 예제를 바꿔가며 테스트가 가능합니다!

 

 

저는 개발할때는 Scite4AutoHotkey 를 사용하고, 예제 등을 테스트할때는 이걸 사용하네요.

유용하게 쓰시길 바랍니다!

 

미니 에디터.zip

 

Credits : GeekDude, Lexikos, szujeq

Based on GeekDude's CodeQuickTester

Last Modified by Soft (2015/02/18)

  1. 그리고나 2015.05.14 19:35 신고

    드래그 앤 드롭이 안되어서 더 불편하네요;;
    본문에는 드래그 앤 드롭이 가능하다 하셨으나
    파일명에 방패마크를 보니 아마도 Compile_AHK_를 사용하여 관리자 권한 실행을 넣으셨네요
    윈도우8 사용자 계정은 관리자권한을 넣으면 드래그 앤 드롭이 안됩니다
    기본적인건데 아마도 아실텐데 잠시 깜빡 하셨나봅니다
    관리자 권한을 빼고 재 컴파일 부탁합니다
    귀찮으시면 소스 경로 좌표 좀 부탁합니다

    • BlogIcon 예지력 2015.05.14 21:55 신고

      오토핫키 소스에 권한을 올려놓고 빌드한거라 관리자권한으로 컴파일됬나보군요. 저도 윈도우8인데, 사용자권한수준을 낮춰어서 그리고나님 컴퓨터에서 그런 문제가 생길지 몰랐습니다.

      제가 현재 모바일이고, 최근에는 컴퓨터하는 시간이 아예없어서 당장은 수정버전이나 소스코드를 올려드리긴 힘들듯하네요. 여유가 생기면 바로 올려볼게요.

      급하시다면, 네이버에 윈도우8 드래그드롭 검색으로 락을 해제하는 방법을 알아보세요.
      http://housegod.tistory.com/156

 

함수를 Try 하고, 예외발생시 에러코드를 Throw 하고 Exception 을 Catch 한다.

 

Try 는 알고리즘을 구성할때 굉장히 중요하고, 필수적인 문법입니다. 이미지서치할때 ErrorLevel 을 확인하죠?

에러레벨을 반환하는 과정이 바로 Try하고 Catch 하는 과정입니다.

 

기본적인 Try, Catch 코드를 확인해보겠습니다.

 

try  ; 함수를 시도한다
{
    HelloWorld()
    MakeToast()
}
catch e  ;try 함수의 Exception 을 관리합니다
{
    MsgBox, Exception 이 Throw 되었습니다 `nThrow된 함수: %e%
    Exit
}

HelloWorld()  ; 항상 성공하는 함수, Exception 이 없습니다
{
    MsgBox, 안녕하세요!
}

MakeToast()  ; 항상 실패하는 함수, Exception 이 생성됩니다
{
    ; try 부분의 Catch 함수로 점프
    throw A_ThisFunc " 가 실패하였습니다."

 

Try와 Catch 기본.ahk

 

Try  함수를 실행하는 부분입니다. 위 코드에서는 HelloWorld() 와  MakeToast() 라는 2개의 함수를 실행했습니다.

Throw : Exception 을 던져줍니다. 위 코드에서는 MakeToast() 함수가 Throw 했습니다.

Catch : Exception 즉 , 예외를 받습니다. Throw를 받아와 정보를 얻습니다. 위 코드에서는 A_ThisFunc " 가 실패하였습니다." 라는 예외를 받았습니다.

 

주석을 달았으니 알고리즘에 대한 이해는 어느정도 되실거라 예상합니다. 그러면 구체적으로 Try 와 Catch 에 대해 설명해볼게요

 

Try는 블럭 { } 으로 감싸주어야합니다.

 

try {
    ...
} catch e {
    ...
}

 

 

Catch 는 아래와 같습니다.

 

Catch [, 저장할변수]
{
     ...
}

 

저장할변수는 생략이 가능한데, 변수설정시에는 아래 5가지의 정보가 오브젝트로 저장됩니다.

What : 명령 또는 실행된 함수 또는 에러가 실행된 때에 대한 이름

File : 에러가 발생한 스크립트 파일의 경로

Line : 에러가 발생한 곳의 줄 번호

Message : 에러 메세지 또는 ErrorLevel 값

Extra : 에러에 대한 부가적인 설명

 

Try, Catch 구문을 사용하는 이유는 코드를 작성할때, 모든 경우의 알고리즘을 작성할 것이 아니기 때문입니다.

또한 에러레벨보다 다양하게 예외의 상황에 대처하게끔 만들수있기 떄문이죠.

Try , Catch 구문을 통해 정교한 프로그램을 만드시기 바랍니다!

 

try
{
    obj := ComObjCreate("ScriptControl")
    obj.ExecuteStatement("MsgBox ""내장 VBScript""")
    obj.InvalidMethod() ; 런타임 에러를 발생시킴
}
catch e
{
    ; For more detail about the object that e contains, see Catch.
    MsgBox, 16,, % "Exception이 throw되었습니다!`n`nwhat: " e.what "`nfile: " e.file
        . "`nline: " e.line "`nmessage: " e.message "`nextra: " e.extra
}

 

Catch 에러레벨.ahk

  1. ㅁㄴㅇㄹ 2015.03.14 19:07 신고

    사이트 한번 깔끔하네요 와 진짜 잘만들었네ㅋㅋㅋ 강의도 깔끔하고

어의는 직관적이고, 실행하기 위한 사전작업이 필요치 않습니다.

 

 

특징

  • ● 지정값으로 물약복용
  • ● 배고픔, 모든기관 설정수치에 따른 음식섭취
  • ● 사용자설정 자동저장
  • ● 쉬운 인터페이스
  • ● 일시정지 기능
  • ● 최소화(숨겨둔)상태여도 작동

 

업데이트 노트

  • ● 시작메시지 사용함수 변경, 향상된 성능
  • ● 로그(사용내역) 기능 추가, 얼마만큼의 물약을 사용했는지 확인이 가능합니다
  • ● 사용자게시판(방명록)과 어의와의 이동간에 발생했던 디자인에러 수정
  • ● 선택키 마우스 휠버튼 → 마우스 오른쪽버튼 으로 변경

 

다운로드 XP버전은 업데이트되지 않았습니다. XP유저는 기존2.4 버전을 이용해주세요.

이 버전은 더 이상 제공되지 않습니다.

카테고리 에서 최신버전을 사용해주세요!

 

 

중요

실행시 MSVCR100 에러가 뜬다면 여기를 클릭해 파일을 다운받아 설치하세요. 32비트 사용자 x86, 64비트 사용자 x64

최신버전으로 업데이트 하신경우, '설정초기화'를 하시기를 추천합니다.
수치와 상관없이 '사용X' 인것은 사용하지 않습니다.
배고픔과, 기관수치는 가급적 5 이상으로 설정하세요.

 

+ '핵폭탄' 님이 말씀해주신 자동종료 기능은 좀 더 연구를 해봐야겠습니다. 생각한 논리구조는 있는데 적용이 힘드네요ㅠ 

+ 신분이 미천한 재수생인 관계로 주말에 잠깐 시간내서 개발하는게 끝입니다. 사용자분들의 양해바랍니다

'Deprecated > 어의' 카테고리의 다른 글

어의 2.6.1 Fixed (3월 25일 패치)  (64) 2015.03.25
어의 2.6 (+XP버전)  (13) 2015.03.13
어의 2.5  (2) 2015.02.15
어의 2.4  (12) 2015.02.05
어의 2.3  (4) 2015.01.22
어의 2.1 다운로드 (+ XP버전)  (5) 2015.01.10
  1. 핵폭탄 2015.02.16 02:08 신고

    업데이트 감사합니다 ㅎㅎ 로그내역 확인 좋네요 ㅎ

Language : AutoHotkey_H

Author : jNizM

Function : Shows info about memory via AutoHotkey

Source : http://ahkscript.org/boards/viewtopic.php?f=6&t=142&p=38270#p38270

 

소스코드

'프로그래밍 > Archive' 카테고리의 다른 글

암호화 , 복호화 프로그램  (17) 2015.02.19
Animate gif GUI  (0) 2015.02.19
메모리최적화 MemoryInfo  (0) 2015.02.15
로그인 폼디자인  (0) 2015.02.05
파일,폴더 가상화 Virtualization  (14) 2015.02.03
GUI Skinning Method  (0) 2015.02.03

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

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

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

 

필요한 파일

ㅡ 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")
        }
}

SkinForm.ahk

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")
        }
}

예제.ahk

 

스킨파일(.msstyles) 이 많아 하나하나 확인해보고싶은데 너무 귀찮으시죠? 각 스킨을 미리보기로 미리보는 '프리뷰' 프로그램을 사용하세요

USkin.dll이 있는 폴더에서 실행하세요!

프리뷰.zip

  1. BlogIcon 오토핫키 2015.09.18 14:50 신고

    이야 이런게 있는진 몰랐네요. 잘 쓰겠습니당 -0-

  2. 박지민 2016.02.11 12:35 신고

    이런기능이 있엇다니 정말.. 대단한거같습니다.
    다만 dll이랑 msstyles가 다른위치에 잇으면 스킨이 적용되지않던데

    혹시없어도 적용되는 방법이 잇을까요?

  3. 2016.07.07 17:35 신고

    진짜 설명엿같이해놨네 이걸어떻게따라하냐? 3시간따라하다가 포기한다 ㅆㅂ

  4. ㅇ1 2016.07.07 18:02 신고

    설명진짜 엿같이해놓으셨네요 이걸어떻게따라합니까 여기 다 오는사람들 초보인데 ㅡㅡ

  5. 오핫개미 2016.08.27 21:46 신고

    예지력님 안녕하세요. 오핫카페에서 활동하는 오핫개미입니다.
    예지력님 글 보고 다행히 GUI 에 스킨을 입힐 수 있게 되었습니다. 감사합니다.
    궁금사항이 있는데 타이틀바에 폰트 색을 바꾼다던가 타이틀바의 길이를 늘리는 등은 어떻게 하나요?

    • BlogIcon 예지력 2016.08.28 22:57 신고

      제가 알고 있는 한에서는 저도 모릅니다
      시스템 설정에서 관련하는 부분으로 알고 있어서요

  6. ㅇㅇ 2016.09.09 16:53 신고

    잘쓰고있다가 갑자기 어느순간부터 컴파일을하면 gui스킨이 적용되지않습니다.
    갑자기 그러는데 왜그런지 아시나요?

  7. 프로 2016.10.19 18:11 신고

    그 스킨입히고 컴파일후 더미다 패킹을하면 스킨이 몇몇부분에서 적용이 풀리던데 해결방법 아시나요ㅠ

  8. 왕초보 2017.05.15 00:36 신고

    윈도우포럼의 왕초보라고 합니다..
    좋은것을 배우고 갑니다..
    항상 좋은일만 있으세요..

  9. 궁금 2017.07.16 07:53 신고

    위에 다운스킨 말고 새로 스킨 따로만들어서 적용할 수 있나요?

    가능하다면 어떤 프로그램으로 스킨 수정이 가능한가요?

  10. dsaafds 2017.10.22 00:10 신고

    스킨적용이 안되시는분은 오토핫키 32비트버전을 이용해주세요.
    만약 아니라면 지랄마세요 64비트쓰고있는거맞으니까 닥치고 32비트깔으세요.

  11. 초보 2017.12.05 22:53 신고

    전 3일차 초보인데 이정도면 엄청 친절한 설명인거 같고요
    예제도 있고, 감사하게 잘 사용중 입니다.
    이것도 못하시는 분들은 오토핫키는 커녕
    간단한 유틸 프로그램 조차 못다루시는 분들 같은데 ㅋㅋ

  12. jk 2018.02.15 17:44 신고

    windows 10에서 실행해보고 있는데, 잘 안되네요. exe로는 제대로 보이는데..
    path도 맞고요. 아마 환경적인 문제로 보이는데..

    • jk 2018.02.15 17:56 신고

      확인해보니 64bit라서 안되나 봅니다.
      T.T

시작하기 전에

1. FileInstall 명령어를 아셔야합니다. 여기를 클릭하시면 명령어 설명으로 이동합니다

2. DllCall 명령어를 아셔야합니다. 여기를 클릭하시면 설명으로 이동합니다.

3. 외부 DLL파일이 필요합니다. 여기를 클릭해 다운로드페이지로 이동합니다

가상화 방법

bxsdk32.dll 파일을 소스코드파일과 동일한 경로에 위치시키세요.

특정 폴더를 가상화시키기 위한 코드는 아래와 같습니다.

hModule := DllCall("LoadLibrary", str, A_ScriptDir "\bxsdk32.dll") ; DLL파일을 불러온다
DllCall("bxsdk32\BoxedAppSDK_Init") ; DLL파일을 시작한다
DllCall("bxsdk32\BoxedAppSDK_CreateVirtualDirectoryA", AStr, 폴더경로, Int, 0) ; 폴더경로 를 가상화한다

가상화를 종료하고, DLL파일을 닫기 위한 코드는 아래와 같습니다.

DllCall("bxsdk32\BoxedAppSDK_Exit") ; 가상화를 종료한다
DllCall("FreeLibrary", "UInt", hModule) ; DLL파일을 닫는다
  1. 까망 2015.02.27 10:35 신고

    질문있어요
    폴더 가상화 했는데 100M정도요
    근데 '시스템 호출에 전달된 데이터 영역이 너무 작습니다' 오류 메세지가 뜨는데
    100M면 너무 큰가요?

    • BlogIcon 예지력 2015.02.27 18:04 신고

      아뇨, dll에 따른 문제는 아닐껍니다. 다른 요인때먼이라고 생각되네요
      근데100mb 정도의 파일을 가상으로 추가하고싶으시면 패커나 BinRun 라이브러리로 애초 파일에 내장해두는것이 좋을거같습니다.

  2. 용가리맨 2015.03.02 21:56 신고

    가상화 하면 장점이 먼가요

    • BlogIcon 예지력 2015.03.03 22:50 신고

      실제 디스크를 쓰지않으니, 리소스파일들을 컴퓨터에 설치할필요가없어 깔끔한 싱글 파일로 배포가 가능하겠죠?
      외장하드같은 경우에는 깨울필요가없고

  3. 요이요이 2015.04.14 00:31 신고

    안녕하세요 질문 하나만 드리고싶은데요

    혹시 L버전에서는 정상작동하는데 왜 베이직버전에선 정상작동을 안할까요? 되게하는 방법은 없나요..?
    버전별 DLLCall을 열어보았는데 특별히 다른점은없더라구용.. 답변주시면 감사하겠습니다 ^^!

    • BlogIcon 예지력 2015.04.15 22:43 신고

      문법에 조금 변경이 생기고, 기능추가가 L에서 됬으니까요
      베이직은 업데이트가 중단된지 7-8년 정도 됬습니다...

  4. 최고에요 2015.05.02 18:44 신고

    오토핫키 베이직 버전을 사용해서 가상화할수있는 방법은 없을까요?
    이미지 화일이 너무 많아 지저분하고 , 어떤 이미지를 이용하는지 노출되면 안되는 까닭에 여기까지 왔습니다 만, 제가 베이직밖에는 쓸줄몰라서 곤혹스럽네요.
    다른 방법은 없을까요...

    질문한김에 질문하나더 드려봅니다.
    텍스트문서로 만들어진 로그인정보를 불러오는 매크로를 작성했는데.. id와 password가 그대로 노출되있어서 해결책이 없을까 싶습니다.
    감사합니다.

    • BlogIcon 예지력 2015.05.04 21:37 신고

      베이직은 제가 사용을 안해서 방법을 모르겠습니다

      아이디와 패스워드가 그대로 노출된다는게 텍스트문서에 표기되어있기 때문인가요? 그렇다면 텍스트문서를 암호화하는 방법이 있겠네요

  5. 최고에요 2015.05.04 22:59 신고

    아.. 그러니까 암호화하면 되겠다는건 알겠는데.. 그 방법을 어찌해야할지 몰라서요... 너무 막연한질문인가요..

    • BlogIcon 예지력 2015.05.08 08:42 신고

      AES 암호화 등의 방법을 사용해서 텍스트파일을 암호화하고
      오토핫키에서 FileRead나 다른방법으로 텍스트파일을 읽을떄 복호화 과정을 거쳐야합니다.
      구글링으로 autohotkey encryption 찾아보면 많이 나오니까 확인해보세요. 단순히 댓글로 설명하기에는 관련 소스가 너무 많습니다.

  6. dww 2016.02.21 19:15 신고

    혹시예지력님이 올리신 gui 스킨을파일을 가상화하려고하는데
    아무리 해봐도 안되네요 ㅠㅠ 도움좀

  7. 가상화궁금증 2016.03.02 18:12 신고

    안녕하세요 테일에서도 가상화 방법보고 예문을 가지고 해봤는데요..
    hModule := DllCall("LoadLibrary", str, A_ScriptDir "\bxsdk32.dll") ; DLL파일을 불러온다
    DllCall("bxsdk32\BoxedAppSDK_Init") ; DLL파일을 시작한다
    DllCall("bxsdk32\BoxedAppSDK_CreateVirtualDirectoryA", AStr, A_Temp, Int, 0) ; 윈도우 임시폴더를 가상화
    FileInstall, test.txt, %A_Temp%\test.txt, 1 ; 임시폴더에 test.txt 파일을 설치
    Run, %A_Temp%\test.txt ; 임시폴더의 test.txt 파일 실행
    return

    이대로 실행을하면 test.txt파일을 찾을수 없습니다라고 뜹니다.

    그런데 또 동봉된 예문 jpg로된 스크립은 됩니다.. 어떤부분이 문제일가요?

  1. BlogIcon 플밍 2015.02.07 20:15 신고

    헙!!잘보고갑니다 !!

  2. 아이뽄 2015.02.14 23:22 신고

    네 아직접근이되더라고요 지금은소스값 강제로수정하면 바로튕기더라구요 그대충 찾은소수값중에 확실한소스값찾기전까지는 노가다네요ㅜ

  3. 프리서버해킹하자 2015.03.10 14:35 신고

    프리서버 게임에서 메모리 변조나, 패킷변조 하는 방법을 찾을수 있을까요..?

 

FileInstall 명령어를 아시는지요?

 

파일인스톨, 스크립트 실행시 파일을 설치하는 명령어입니다.


파일은 어떠한 것이든지 상관없습니다. Dll 파일이든지, 이미지파일이든지 혹은 EXE 실행파일이라 하더라도요.


FileInstall, 설치할파일명.확장자, 설치할경로\파일명.확장자, 1


간혹, FileCopy 명령어와 혼동하시는분이 있는데,

FileCopy 파일카피는 파일을 복사해서 이동하는것이기 때문에

복사할 파일이 반드시 있어야 합니다.


파일인스톨은 파일을 '설치'합니다. 컴파일했을 경우에는 설치파일이 EXE파일안에 내장됩니다.

즉, 컴파일후에는 설치할 파일이 없어도 파일을 설치경로에 설치합니다.


따라서, 다른 파일을 이용해야한다거나 이미지파일을 포함해서 프로그램을 배포하고싶을때 유용하겠죠?


FileInstall 명령어 맨 뒤에 붙은 , 1 은 덮어씌운다는 표현입니다.

생략한다면 설치경로에 파일이 이미 존재할시에는 설치를 진행하지 않습니다.


FileInstall, Name.txt, C:\Name.txt, 1        ; 소스경로에 있는 Name.txt 파일을 C드라이브-Name.txt에 설치
FileInstall, Skin.dll, %A_Temp%\Skin.dll, 1    ; 소스경로에 있는 Skin.dll파일을 Temp폴더-Skin.dll로 설치


파일인스톨은 단점을 굳이 적는다면

디렉토리(경로)에 파일을 설치하는것이기때문에

많은 파일들을 설치할 경우에는 설치된 파일들때문에 더러워보이기도합니다.


이를 해결할 방법으로는

FileSetAttrib 명령어를 사용해서 파일의 속성을 숨김으로 설정해 보이지않게 설정하는 방법이 있지만

만약 사용자의 컴퓨터가 '숨김 파일 보기' 를 설정했다면 이마저도 소용이없습니다.


다음에는 파일자체나, 경로를 가상화함으로서 파일인스톨 역시 가상화시키는 글을 적어보겠습니다.

가상화방법을 사용하면 파일을 가상의 경로 즉, 램메모리에 설치함으로서

실제로는 어떠한 위치에서도 파일을 찾아볼수없게 만들수있습니다.


다음 글을 기대해주세요!

  1. resuobohc 2018.02.01 10:18 신고

    소스경로라는것이 보통 어디를 말씀하시는건가요 ? 스크립트가 있는 경로인가요 아니면 오토핫키가 설치되어있는 파일인가요 ?

  2. AHK 질문 2018.05.26 23:23 신고

    "
    다음에는 파일자체나, 경로를 가상화함으로서 파일인스톨 역시 가상화시키는 글을 적어보겠습니다.
    가상화방법을 사용하면 파일을 가상의 경로 즉, 램메모리에 설치함으로서
    실제로는 어떠한 위치에서도 파일을 찾아볼수없게 만들수있습니다.
    "

    위의 글을 보고 램메모리에 설치하는 방법을 찾아보는데 없습니다 ㅠㅠ 글을 올리셨는데 제가 잘 못찾고 있는건지 알려주세요...
    감사합니다!



    • BlogIcon 예지력 2018.05.27 01:13 신고

      내장파일 설치 가상화라는 제목검색해보시면 나올거에요, 다만 dll사용하는거라 그닥 추천은안합니다

 

자동화는 오토핫키가 가장 특화한 영역입니다. 많은 분들이 오토핫키에 발을 들이는 이유이기도하지요.

이 글을 읽고나면 업무자동화 등 반복적인 작업을 자동화하는 프로그램은 직접 제작하실수있습니다.

 

시작하기 전에

 

오토핫키에 아직 미숙하신 분여기를 클릭해 소스코드 생성과 컴파일방법을 확인하세요.

ㅡ 이 글은 반복적인 작업자동화 프로그램 제작 강의글입니다.

ㅡ 소스코드 작성에 필요한 모든 명령어,문법 등을 다룹니다. 따라서, 방대한 글이 될 것입니다.

ㅡ AutoHotkey_L 1.1.19.1 유니코드 버전에서 작성했습니다. 설치는 여기를 클릭하세요

ㅡ 오토핫키 공식에디터 Scite4AutoHotkey 를 사용합니다. 설치는 여기를 클릭하세요

 

 

사용할 명령어 필수인것은 '필수' 알아두면 도움이 되는것은 '옵션'으로 표기합니다

 

  • ㅡ [필수] HotKey 지정문법
  • ㅡ [필수] Send / SendPlay / SendInput / SendMode
  • ㅡ [필수] Click / MouseClick / CoordMode
  • ㅡ [필수] Sleep
  • ㅡ [필수] Loop / Break / Continue
  • ㅡ [필수] If / Else / 변수 표현식
  • ㅡ [옵션] ImageSearch / PixelSearch
  • ㅡ [옵션] ControlSend / ControlClick
  • ㅡ [옵션] Run / RunWait
  • ㅡ [옵션] SetTimer / Critical
  • ㅡ [옵션] WinActivate / WinWaitActive
  • ㅡ [옵션] Gui 문법 / MsgBox / Reload 문법
  • ㅡ [옵션] 자세한 Expression / 연산자 / 변수 문법
  • ㅡ [옵션] SingleInstance / 스크립트 설정 문법
  • ㅡ [옵션] Object / Array 문법
  • ㅡ [옵션] ActiveX 문법 / 웹 자동화

 

 

필수 명령어

 

1. HotKey 지정문법

HotKey 핫키 는 키보드 키 또는 키조합입니다. 핫키를 설정한 다음에 핫키를 누름으로써 특정액션을 취하게 설정할 수 있습니다.

 

A::
MsgBox, A키 눌렀네
Return ; 여기까지 실행하고 끝낸다

 

※ 세미콜론 ; 는 주석으로 일종의 코멘트입니다. ; 이후의 말은 코드실행에 아무런 영향을 주지않습니다.

위 소스코드를 적고, 실행해보세요. 키보드 A(한글 ㅁ)키를 누르면 "A키 눌렀네" 라는 메시지박스가 나옵니다.

 

 

HotKey 정리

따라서, 핫키를 지정하고 사용하는 방법은 아래와 같습니다.

 

핫키지정::

핫키를 눌렀을시 실행할 명령어

Return

 

추가로, 핫키지정은 'A' 처럼 단독 키뿐만아니라 컨트롤(Ctrl), 알트(Alt), 키와 조합이 가능합니다.

ㅡ 컨트롤(Ctrl) 키는 ^ 로 표현하고

ㅡ 알트(Alt) 키는 ! 로 표현합니다

 

^A::
MsgBox, 컨트롤 + A 키를 눌렀네요
Return
!A::
MsgBox, 알트 + A키를 눌렀네요
Return

 

 

2. Send / SendPlay / SendInput / SendMode

Send 는 키보드입력을 보내는 명령어입니다.

SendPlay 는 게임키입력에 최적화되어있는 Send명령어입니다. (한글입력 불가)

SendInput 은 Send보다 빠르고 안정적인 Send입니다.

 

!X::
Send, 이것이 Send명령어입니다 {Enter} ; 이것이 Send명령어입니다 입력후 엔터
SendPlay, This is SendPlay {Enter} ; This is SendPlay 입력후 엔터
SendInput, 이것은 SendInput {Enter} ; 이것은 SendInput 입력후 엔터
return

 

 

위 소스코드에서 확인할수있듯이,

엔터와 같은 키보드 자체의 키를 표현하기 위해서는 { } 괄호를 사용해야합니다.

Enter 로 적으면 엔터키가 아니라 "Enter" 라는 문자를 적겠죠.

따라서 컨트롤키는 {Ctrl}, 알트키는 {Alt}, 스페이스바는 {Space}, Esc는 {Esc}, Home 키는 {Home}, PgUp키는 {PgUp} 등으로 표시해야합니다.

 

Send와 SendPlay 그리고 SendInput 등 따로따로 적어서 사용할수도 있지만

SendMode, 사용할모드 를 적어주면 Send로도 Send사용모드 로 자동변환되어 사용할 수 있습니다.

아래 코드를 확인하죠

 

SendMode, Input  ; 모든 Send명령어를 SendInput 방식으로 변환한다
!X::
Send, {a}  ; SendInput, {a} 와 동일한 성능을 구현합니다.
Send, {A}

return

 

추가로, 위 코드의 결과에서 {a} 와 {A} 가 어떻게 다른지 확인이 가능하죠?

Send, {a} 는 소문자 a를 입력하고

Send, {A} 는 대문자 A를 입력합니다.

 

Send 정리

따라서, Send는 아래의 예처럼 사용합니다.

 

SendMode, Input  ; 모든 Send명령어를 SendInput 방식으로 변환한다
!X::
Send, 입력할 문자/문자열
Send, {입력할 키}
return

 

 

3. Click / MouseClick / CoordMode

두 명령어 둘다 마우스클릭을 합니다.그러나 Click이 MouseClick 보다 간단해서 더 자주 사용합니다.

 

Click 

현재 마우스커서 위치에서 마우스왼쪽버튼 클릭

Click 44,55 

컴퓨터화면 x좌표 44 y좌표 55 지점을 마우스 왼쪽클릭 

Click Right 44, 55

컴퓨터화면 x좌표 44 y좌표 55 지점을 마우스 오른쪽클릭 

Click 2

현재 마우스커서 위치 마우스왼쪽버튼 2번 클릭 

Click Down 

마우스 왼쪽 버튼을 누르고 있는다.

Click Up Right 

마우스 오른쪽 버튼을 뗀다.

Click %변수1%, %변수2%

컴퓨터화면 x좌표 변수1, y좌표 변수2를 마우스 왼쪽클릭 

 

Click 명령어에서 사용되는 X좌표와 Y좌표는 CoordMode 좌표설정명령어의 영향을 받습니다.

따로 CoordMode 명령어를 명시하지않을시, Screen 좌표로 설정됩니다.

가능한 Screen 좌표는 사용하지않는것이 좋습니다. 밑으로 내려가면서 이유를 설명하죠

 

Screen 좌표는 컴퓨터 전체화면에서의 좌표를 뜻합니다.

컴퓨터 해상도 1920 * 1080 의 경우 화면 왼쪽 맨위에서부터 0,0으로 좌표는 시작됩니다.

오른쪽으로 갈수록, X좌표값이 증가하고

아래로 내려갈수록, Y좌표값이 증가합니다.

그러므로, 화면 오른쪽 맨아래의 좌표는 1920, 1080 이 됩니다.

 

정확한 좌표를 확인하기 위하여 오토핫키 설치시 제공되는 프로그램을 이용해보겠습니다.

본인 컴퓨터의 오토핫키 설치폴더로 가면 'AU3_Spy.exe' 이라는 파일이 있습니다, 실행하세요.

 

 

실행하고, 바탕화면 빈공간을 클릭해보세요.

 

 

사진의 빨간색으로 표시한 부분에서

Absolute, Relative 그리고 Client 가 보이시나요?

 

Absolute 는 Screen 좌표를 뜻합니다. = 컴퓨터의 전체화면에서의 좌표

Relative 는 활성창의 좌표를 뜻합니다.= 활성창의 좌표, 현재는 활성창이 바탕화면

Client 는 활성창의 작업창(최소호,최대화,닫기)를 제외한 좌표를 뜻합니다. = 사용빈도 X

 

위에서 Screen 좌표를 사용을 최대한 지양하라 했습니다.

그 이유의 예로는,

스크린 좌표를 이용해서 프로그램 내의 특정부분을 클릭하게 만든 경우

프로그램의 위치를 이동하면 엉뚱한 부분을 클릭하기 떄문입니다.

위 사진은 활성창이 바탕화면이기 때문에 Screen좌표와 Relative 활성창좌표가 동일한것일뿐

 

따라서 무조건 프로그램 자체내의 좌표, =활성창 좌표 Relative 를 이용하는 것이 좋습니다.

활성창좌표는 창을 기준으로 (0, 0) ~ (창크기X좌표, 창크기Y좌표) 로 되어있겠네요.

 

한번 활성창좌표와 Click 을 사용하여 에디터창의 스크립트실행 버튼을 눌러보도록 하겠습니다.

 

 

에디터 Sctie4AutoHotkey 의 스크립트시작 버튼의 Relative 좌표를 확인해야겠죠?

X좌표 397, Y좌표 64이네요.

 

또한 소스코드에 Click 명령어가 클릭하는 좌표가 활성창좌표라는 것을 명시해야합니다.

CoordMode, Relative 로 적어두면 소스코드에 표기하는 모든 좌표를 활성창 기준으로 잡습니다.

 

CoordMode, Relative  ; 좌표모드를 Relative 활성창 기준으로
!X::
Click 397,64 ; 활성창 397, 64 좌표를 클릭
return

 

실행결과는 예상한대로입니다. 시작버튼을 클릭하네요!

그런데 스크립트를 실행시킨상태에서 또 다시 시작버튼을 누르면 아래와 같은 확인메시지가 출력됩니다.

 

 

이미 스크립트가 실행되고 있으므로, 새로 실행할 것인지 묻는 메시지군요

'예' 를 누르면 새로실행할것이고, '아니요'는 새로실행하지 않습니다.

위 메시지와 관련한 모든부분은 [옵션]의 SingleInstance / Reload 부분에서 다룹니다.

 

Click 정리

따라서, Click 명령어는 아래의 예처럼 사용합니다.

 

CoordMode, Relative  ; 모든 좌표를 활성창으로 설정한다
!X::
Click, x좌표, y좌표 ; 활성창 x좌표 y좌표 클릭
return

 

 

4. Sleep

키보드, 마우스입력을 했다가 잠시쉬고 다시 입력을 보내고 싶으시죠?

잠시 쉬는것이 'Sleep' 명령어입니다.

 

SendMode, Input
!X::
Send, 안  ; '안' 입력
Sleep, 3000 ; 3000 밀리세컨드 즉, 3초동안 쉰다
Send, 녕 ; '녕' 입력
return

 

밀리세컨드로 시간을 표기해야하므로, 1초는 1000 이 되고, 5.5초는 5500 이 되겠습니다.

 

Sleep 정리

따라서, Sleep 명령어는 아래의 예처럼 사용합니다.

 

핫키지정::
명령어 1
Sleep, 밀리세컨드
명령어 2
Sleep, 밀리세컨드
명령어 3
명령어 4
Sleep, 밀리세컨드
return

 

 

5. Loop / Break / Continue

Loop는 반복문입니다. Break와 Continue는 반복문을 제어하는 명령어이구요.

 

A키를 반복적으로 입력하거나, 오토마우스 처럼 한 위치를 계속해서 클릭하고 싶을때 Loop를 사용합니다.

설마 아래처럼 하시는 분은 없겠죠...

 

!X::
Send, A
Send, A
Send, A
Send, A
Send, A
return

 

Loop를 이용하면 아래처럼 소스를 작성할 수 있습니다.

 

!X::
Loop, 5   ; 괄호안의 명령어를 5번만큼 반복한다
{
 Send, A
}
return

 

Loop명령어는 폴더개수, 특정 확장자 파일의 개수와 모든이름을 구하는등 다양한 활용이 가능하지만

이 글에서는 명령어반복만을 강의하도록 하겠습니다.

 

계속해서 진행하죠

 

!X::
Loop, 5
{
 Send, 안녕하세요 {Enter}
}
MsgBox, 끝났네요
return 

 

위 코드의 실행결과가 어떨지 예상이 되시나요?

 

Loop 괄호 { } 안의 명령어를 5번만큼 반복하고, 괄호밖을 나오게되는데

괄호 밖의 MsgBox 명령어를 만나 '끝났네요' 라는 메시지를 띄우고 return을 만나 끝납니다.

 

반복할 횟수를 생략한다면 무한반복이 됩니다.

 

!X::
Loop
{
 MsgBox, 이 창은 계속 뜹니다
}
return

 

무한반복을 종료하는 방법으로 Break 를 이용합니다.

그전에 먼저 A_Index 라는 오토핫키의 반복문 내장변수에 대해 짚고 넘어가겠습니다.

 

A_index (대소문자 구별X) 은 반복문이 몇번째로 실행중인지 카운트해주는 내장변수입니다.

내장변수 = 자체적으로 값이 설정되는 변수

 

!X::
Loop
{
 MsgBox, % A_Index
 if (A_Index = 5)
  break
}
MsgBox, 5번 실행하고 나왔네요
return

 

위 코드의 결과는 아래와 같습니다

 

 

 MsgBox % A_Index
 if (A_Index = 5)
  break

 

이 부분을 설명해보겠습니다, A_Index 는 반복문의 실행횟수를 저장하는 변수라고 했습니다.

그 변수를 메시지박스로 표현하려면 % 퍼센트 표시를 붙여줘야합니다.

% 없이 적는다면 "A_Index" 라는 글자를 보여주기 때문이죠.

% 표기를 함으로써, 문자나 숫자가 아닌 변수의 저장된 값을 불러옵니다.

 

MsgBox, A_Index  ; A_Index 라는 글자를 띄움
MsgBox, % A_Index  ; 반복문 횟수를 표현
MsgBox, %A_Index%  ; 반복문 횟수를 표현

 

% 하나와 % % 두개에 대한 자세한 설명은 이후의 [필수] 변수 표현식 에서 설명합니다.

 

다음으로 If (A_Index = 5)

If (A_Index = 5) 는 보기만해도 대충 짐작이 가시죠?

A_Index 변수의 값이 5가 될때 다음 명령어를 진행합니다.

 

다음 명령어는 Break 네요,

반복문을 탈출하는 Break는 Loop 괄호밖으로 빠져나갑니다.

Loop 괄호밖에는 '5번 실행하고 나왔네요' 라는 메시지박스가 있네요.

그러므로, 코드의 결과는 위 이미지와 동일합니다.

 

Break 명령어는 가장 가까운 Loop { } 괄호를 빠져나갑니다.

현재의 { } 괄호를 탈출하는것이죠.

무슨 말인지 다음 코드에서 확인해보세요

 

 !X::
Loop
{
    Loop
    {
        MsgBox, 처음실행
        break
    }
    MsgBox,  새끼 루프 탈출
    break
}
MsgBox, 외곽 루프 탈출
return

 

좀 복잡하신가요? ㅎㅎ

실행결과를 보시면 이해가 쉬울거에요

 

 

알고리즘을 순서대로 적어보겠습니다.

0. 알트 + X 핫키를 누르면

1. '처음실행' 메시지박스 출력

2. Break 명령어로 현재의 괄호(= 가장 가까운 Loop) 탈출

2. 괄호밖의 '새끼 루프 탈출' 메시지박스 출력

4. 2번째 Break 명령어로 현재의 괄호 (= 가장 가까운 Loop) 탈출

5. 괄호밖의 '외곽 루프 탈출' 메시지박스 출력

6. return 을 만나 종료

 

그럼 Continue 는 Break 와 다른점이 무엇일까요?

차이점은

Break는 괄호를 탈출시켜서 Loop 반복문을 끝낼수있지만

Continue 는 괄호의 끝으로 가 Loop 반복문을 다시 반복합니다. 즉, 끝나지않습니다.

 

Continue 예제를 하나 확인하겠습니다

 

!X::
Loop, 10
{
    if (A_Index < 5)
        continue
    MsgBox, % A_Index
} ; Continue 는 바로 여기로 이동
return

 

코드를 실행해보면,

메시지박스가 5,6,7,8,9,10 을 차례대로 출력됩니다.

 

A_index, 루프 반복이 5번 미만일때는 Continue 명령어때문에  } 로 이동합니다. 탈출하는것이아닙니다.

그리고 다시 A_Index 값 확인, 5미만이면 } 로 이동, 5이상이면 메시지박스 출력.

루프 횟수를 10으로 설정했으니 이러한 과정을 10번만 거치게됩니다.

 

Loop / Break / Continue 정리

따라서, 반복문과 반복문 탈출은 아래의 예처럼 합니다.

 

!X::
Loop, 횟수, 생략시 무한반복
{
    명령어
    break ;반복문 탈출
}
MsgBox, 반복문 탈출했네요
return

 

 

6. If / Else / 변수와 표현식

If 와 Else 는 조건식입니다. 위에서 간단한 예시로 확인해봤고 실제로도 쓰임은 전혀 복잡하지 않습니다.

A_Index 라는 변수에 대해서도 잠깐 훑어보았는데,

이 챕터에서 조건식과 ,변수, 그리고 이 모든것을 사용하기위한 표현식에 대해서 자세히 배워보도록 하겠습니다.

 

Age = 20     ; Age 라는 변수에 숫자 20을 저장한다
MsgBox, % Age

 

'Age = 20' 이 보이시죠?

주석의 설명대로 Age 라는 변수에 숫자 20을 저장하는겁니다.

 

오토핫키에서 변수는 자료형(데이터의 타입) 을 명시할 필요가 없습니다.

굉장히 편리하죠 C언어는 변수마다 각각 지정해줘야 하는 번거로움이 있는데 말입니다.

 

한가지 중요한점. 변수명은 오토핫키의 명령어나 내장변수(A_index 등) 으로 설정하면 안됩니다.

 

따라서, 변수는 이렇게 지정하는거군요!

 

변수명 = 변수에 저장할 값
Height = 180   ; Height 라는 변수에 숫자 180을 저장
Gender = 남자   ; Gender 라는 변수에 '남자' 라는 문자열을 저장

 

변수1에 변수2의 값을 저장하고 싶다면 어떻게 코드를 작성해야 할까요.

'변수1 = 변수2' 로 하니 '변수1'에는 변수2 라는 문자열이 저장됩니다.

아까 % 표기를 했다는것을 기억하시나요? 여기서도 동일한 문법이 적용됩니다.

 

Age1 = 20                  ; Age1 라는 변수에 숫자 20을 저장
Age2 = %Age1%        ; Age2 라는 변수에 변수 Age1(숫자20)을 대입 
Age3 = Age1             ; Age2 라는 변수에 Age1 이라는 문자 저장

 

위 변수의 표현식은 트레디셔널 이라고 부릅니다. 

표현식엔 종류가 2가지 있는데요. 한가지가 지금 설명한 트레디셔널, 두번째는 익스프레션 입니다.

 

If 조건식과 앞으로 오토핫키를 깊이있게 사용할 생각이 있으시다면,

가능한 표현식은 익스프레션으로 사용하는것이 좋습니다.

이유는 If 조건식과 대부분의 '~식'들이 익스프레션을 사용하기 때문인데요

 

그러면 익스프레션을 또 배워야 하나? 머리아픈데..

아닙니다. 트레디셔널과 정말 비슷합니다 간단해요.

 

Age1 := 20             ;Age1 에 숫자 20을 저장
Age2 := Age1         ;Age2 에 변수 Age1 을 대입
Gender := "남자"   ; Gender라는 변수에 '남자' 문자열 저장 

 

= 대신에 := 을 쓰고, 변수를 대입할 때 % % 표시를 하지않네요.

중요한점은 문자를 저장할때는 " " 따옴표처리를 해야한다는것입니다.

 

그러면 정리하겠습니다.

결국 (익스프레션) 변수는 이렇게 사용하는군요.

 

변수명 := 저장할 숫자
변수명 := "저장할 문자"
변수명 := 대입할 변수명

 

숫자변수끼리는 서로 값을 연산할수도 있습니다.

 

변수명 := 변수명1 + 변수명2       ; 변수명1 과 변수명2를 더한 값을 변수명에 저장
변수명 := 변수명1 - 변수명2       ; 뺀 값을 저장
변수명 := 변수명1 * 변수명2       ; 곱한 값을 저장
변수명 := 변수명1 / 변수명2       ; 나눈 값을 저장

 

문자변수끼리는 문자를 누적이 가능합니다.

 

Apple := "사과"              ; Apple 이라는 변수에 문자 사과 를 저장
Juice := "주스"              ; Juice 이라는 변수에 문자 주스 를 저장
Total := Apple . Juice      ; Total 이라는 변수에 변수 Apple과 변수 Juice 의 값을 누적
MsgBox % Total           ; 사과주스 라는 문자가 출력된다

 

이제 그럼 If , Else 와 연관지어 공부해보겠습니다.

 

Apple := 700
Juice := 300
내야할돈 := Apple + Juice                 ;내야할돈 이라는 변수에 Apple변수와 Juice 변수의 더한값을 저장
가진돈 := 3000
거스름돈 := 가진돈 - 내야할돈           ;거스름돈 이라는 변수에 가진돈 변수에서 내야할돈 변수의 뺸값을 저장
if (내야할돈 > 가진돈)                        ; 만약 내야할돈 변수의 값이 가진돈 변수의 값보다 크다면
    MsgBox, 가진돈보다 비쌈              ; 가진돈보다 비쌈 메시지박스 출력
else if (내야할돈 < 가진돈)                ; 만약 내야할돈 변수의 값이 가진돈 변수의 값보다 작다면
    MsgBox, 거스름돈 %거스름돈% 원 남습니다         ; 거스름돈 계산한 메시지박스 출력
else                                                                  ; 그것도 아니라면 (=가진돈과 내야할돈이 같다면)
    MsgBox, 거스름돈 0원 남겠네                          ; 거스름돈은 0원 남겠군
return

 

실행결과는 짐작할수 있듯이,

 

 

If / Else / 변수와 표현식 정리

 

변수명1 := 저장할 값 또는 변수명
변수명2 := "저장할 문자"
if (조건식)
    조건식이 참일 경우 실행할 명령어 한개
else
    조건식이 거짓일 경우 실행할 명령어 한개
return
; 실행할 명령어가 2개 이상일 경우 { } 괄호로 묶어준다.
if (조건식)
{                  ; 조건식이 참일 경우 괄호의 명령어를 수행함
    첫번째 명령어
    두번째 명령어
    N번째 명령어
}
else               ; 조건식이 거짓일 경우 괄호의 명령어를 수행함
{                       
    첫번째 명령어
    두번째 명령어
    N번째 명령어
}
return

 

 

옵션 명령어

 

1. ImageSearch / PixelSearch

ImageSearch 는 화면에서 이미지를 찾는 명령어입니다. PixelSearch 는 픽셀(점)에서 색상을 찾고요.

이미지서치는 오토핫키에서 가장 핫한 명령어가 아닐까 생각하네요.

[옵션] 으로 분류하기는 했지만 사실상 필수라고 봐도 무방할 정도로 활용도가 높습니다.

 

이미지서치 사용하기위해서는 당연히 찾을 이미지, 즉 이미지파일이 필요하겠죠?

캡쳐뜨는 프로그램은 여러가지이니 원하는거 사용하시면 되겠습니다.

저의 경우 기본적으로 윈도우에 설치되어있는 그림판 을 사용합니다.

 

예로서, 이미지서치를 사용해 내 컴퓨터의 로컬 디스크를 클릭하는 코드를 짜보겠습니다.

내 컴퓨터 창을 캡쳐한다음 로컬 디스크 부분은 잘라야겠죠?

 

 

사각으로 선택해서~

 

 

저 부분만 자르겠습니다.

따라서 이미지는 아래사진과 같겠네요.

 

 

그리고 저 이미지파일을 저장합니다, 반드시 영어이름으로 저장합니다.

저는 'MyCom.png' 로 저장하겠습니다. 소스코드와 동일한 경로에 저장해두세요.

 

이제 코드를 살펴보죠

 

A::
ImageSearch, vx, vy, 0, 0, A_ScreenWidth, A_ScreenHeight, MyCom.png
if ErrorLevel = 0         ; 만약 이미지를 찾았을 경우에는 괄호의 명령어를 수행
{
    Click %vx%, %vy%         ; 이미지찾은 위치 X좌표 Y좌표 클릭
    MsgBox, 찾음                ; 찾음 메시지박스 출력
}
else if ErrorLevel = 1           ; 만약 이미지를 못찾았을 경우에는
    MsgBox, 못찾음             ; 못찾음 메시지박스 출력
return                               ; 여기까지 수행하고 종료

 

A키를 누르면 화면에서 소스파일의 경로의 'MyCom.png' 이미지파일을 찾습니다.

 

그런데 이미지를 찾았는지 못찾았는지 확인을 해야하지않습니까?

그것을 확인할수있는것이 ErrorLevel 내장변수입니다.

이미지파일을 찾았을 경우에는 에러레벨이 0 이 되고, 못찾았을 경우에는 1 이 됩니다.

2로 될때는 이미지파일이 경로에 없어 불러들이지 못하는 경우입니다.

 

MyCom 이미지파일의 전체경로를 적어야하지만, 이미지가 소스코드파일과 같은 경로에있을경우는

앞 경로를 삭제하고 이미지파일명.확장자 만 적어줘도 무방합니다. 위 코드처럼요.

 

간략한 설명을 했으니 이제 이미지서치에 대해 자세히 알아보겠습니다.

 

ImageSearch, 찾은X위치, 찾은Y위치, 시작X, 시작Y, 지점X, 지점Y, 이미지파일경로\이미지파일명.확장자

 

찾은위치X, Y에는 이미지파일의 X,Y좌표가 저장되는 변수입니다. CoordMode 의 영향을 받습니다.

변수명X, 변수명Y 로 적어줘야합니다. 저장이 필요없다면 그냥 생략하고 , 로 넘길수있습니다.

 

시작X, Y 에는 이미지파일을 서칭을 시작할 X,Y좌표를 적습니다. CoordMode 의 영향을 받습니다.

지점X, Y 에는 이미지파일을 서칭을 끝낼 X,Y 좌표를 적습니다. CoordMode 의 영향을 받습니다.

 

시작좌표와 끝 지점좌표를 잘 명시해주면

이미지서치에 걸리는 시간과, 경우에 따라 발생하는 렉을 방지할 수 있습니다만

좌표 구하기가 귀찮기 때문에, 그냥 전체화면에서 찾는게 편합니다.

 

ImageSearch, 찾은X위치, 찾은Y위치, 0, 0, A_ScreenWidth, A_ScreenHeight, 이미지파일경로\이미지파일명.확장자

 

좌표 (0,0) 부터 (A_ScreenWidth, A_ScreenHeight) 까지가 전체화면입니다.

 

A_ScreenWidth, A_ScreenHeight 는

앞서말한 A_index 처럼 내장변수 (= 자체적으로 값이 설정되는 변수) 입니다

 

무엇으로 설정되냐구요?

A_ScreenWidth 는 컴퓨터해상도 X좌표

A_ScreenHeight 는 컴퓨터 해상도 Y좌표 가 되겠습니다.

 

해상도가 1920, 1080 인 컴퓨터의 경우에 A_ScreenWidth 는 1920, A_ScreenHeight 는 1080이 되겠네요.

 

작성중입니다.

  1. 이전 댓글 더보기
  2. 2015.12.13 00:10

    비밀댓글입니다

  3. 2015.12.13 08:25

    비밀댓글입니다

  4. 벚길 2015.12.28 16:59 신고

    저 이미지 서치 부분에서 소스코드 파일경로와 이미지 경로를 같게해도 계속 못찾음이라고 뜨는데 무슨 문제인가요?

  5. 진짜 2015.12.31 15:54 신고

    이렇게 이해하기 쉽다니 놀랍습니다.

  6. Settimer 2016.01.03 06:37 신고

     안녕하세요.

    요즘 settimer를 이용해서 프로그램을 짜고 있는데요.

    settimer 문장을 한번만 실행하고 다음부터는 실행을 하지않습니다.

    도저히 해결이 되지 않아 질문을 해볼까합니다.

    도와주시면 감사하겠습니다. ㅠ.ㅠ

    ↓밑에 소스를 간단히 적었구요.

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━




    시작:

    {








    내용~~




    goto,검색







    }

    return







    검색:

    {


    {

    시간 := 딜레이*6000
    SetTimer, 휴식, %시간%

    (return) ;;;; [return]을 넣으면 휴식이라는 문장은 잘되는데 [return]밑에 내용은 실행이 되지않습니다.

    왜그러는 걸까요?

    }




    loop

    {


    pixelgetcolor,~~~~~~~~~~

    지정한 좌표에 색값이 달라지면

    {




    goto,확인




    }







    }







    }

    return




    확인:

    {





    이미지서치 (이미지 발견 못함)

    {


    goto,검색

    }

    }

    return

    끝:

    {

    }

    return




    휴식:

    {


    내용

    }

    rerturn






















    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    • BlogIcon 예지력 2016.01.03 09:47 신고

      return은 서브루틴(함수,goto,gosub)를 끝내는 명령어니까요

  7. 2016.01.04 12:21

    비밀댓글입니다

  8. 123213 2016.01.07 16:42 신고

    센드, 한글입력시 한글이 입력안되고 꿻뚫 이런식으로 출력되는데 무슨문제일까요

  9. 오토핫키입문자 2016.01.07 19:44 신고

    안녕하세요 예지력님 글들을 꼼꼼히 읽어봤는데요 한가지 궁금증이 듭니다.
    한 키를 꾹 누르거나 또는 한 키를 지정된 시간(1초나 2초나 1.5초 등등) 동안만 누르게 하는 명령어는 없나요?
    Sleep은 조금 다른 개념같아요.. 찾아봐도 없는것 같아 질문글 올려봅니다.
    예를 들어서 스페이스키를 1.5초동안만 누르고 싶다 라고 하면 어떤 명령어를 사용해야 할까요?

  10. 안녕로봇 2016.01.10 19:27 신고

    엔터키를 누르는 명령어인데 메모장에선 잘 실행이되나
    게임안에서 엔터키 입력이안됩니다. 게임상에서 백스페이스 입력도 되는데 엔터키 입력은 안됩니다.
    샌드플레이로도 해보고 했는데 안되네요 어떻게해야할까요.

    그리고 위 예제처럼 이것은 sendinput을 출력하려고하면
    알파벳 sendinput이 출력이안되고
    이것은 ㄴ두야ㅞㅕㅅ 이런식으로 한글로 출력해버리는데 왜이럴까요

  11. 부르르갓 2016.02.01 00:03 신고

    특정 좌표 안에서만 이미지서치하게 하는 방법은 없나요?

  12. 235 2016.02.14 00:17 신고

    감사합니다 많은 도움이 됐습니다.

  13. 예지력님최고 2016.02.15 18:16 신고

    예지력형님 정말 궁금하면서 저의 브레인 으로썬 도무지 알 수 가 없는 질문 하나만 남겨봅니다.. 답글 주셨으면 가문의 영광이겠습니다..
    텍스트 파일 맨윗줄을 불러와 어느곳에 붙여넣기하고 그 붙여넣기한 맨윗줄 하나만 삭제하는 스크립트를 짜고싶습니다
    하지만 삭제 부분에서 막혀서 답답해죽겟습니다 한줄한줄 차례로 붙여넣기는 잘되는데 붙여넣기한 맨윗줄 하나 삭제가 안됩니다..
    도와주세요 ㅠㅠ 참고로 fileread,clipboard,txt.txt 문구를 사용하였습니다

  14. 네뷸라메크로사용자 2016.02.18 13:54 신고

    오토핫키 편집프로그램 SciTE4AutoHotkey 을 다운받아서
    네뷸라 메크로를 편집하려고그러는데
    프로그램을 연후

    AdventureHeroHandler()
    {
    if(IsImagePlus(clickX, clickY, "Image\Hero\Hero.bmp", 60, 0))
    {
    if(checkHero)
    {
    Click(clickX, clickY)
    AutoStrengthenHero()
    HeroAutoSelling()
    checkHero := 0
    if(IsImagePlus(clickX, clickY, "Image\Adventure\Start.bmp", 60, 0))
    Click(clickX, clickY)
    }

    이부분을 아래처럼 추가해서

    AdventureHeroHandler()
    {
    if(IsImagePlus(clickX, clickY, "Image\Hero\Hero.bmp", 60, 0))
    {
    if(checkHero)
    {
    Click(clickX, clickY)
    if(IsImagePlus(clickX, clickY, "Image\Hero\Hero-2.bmp", 60, 0))
    {
    Click(clickX, clickY)
    AutoStrengthenHero()
    HeroAutoSelling()
    checkHero := 0
    if(IsImagePlus(clickX, clickY, "Image\Adventure\Start.bmp", 60, 0))
    Click(clickX, clickY)
    }


    이런식으로 바꾸려고하는데요

    문제는 바꿧을때 프로그램이 아예 열리지 않습니다

    찾아보니 프로그램을 정상적으로 열려면 bite수를 맞춰줘야된다고 하는데 (변환전 = 변환후)

    이쪽으로 아예 문외한이라서 어떤방식으로 접근해야되는지 전혀 모르겠네요..

  15. 2016.02.21 14:01 신고

    Error: Error opening the destination file
    이건 어떻게 해야하나요;;

  16. 송아지 2016.03.04 10:51 신고

    죄송하지만 이미지서치기능말고 텍스트 서치기능은 없나요?

  17. Dante 2016.03.15 14:15 신고

    질문 있습니다. 예를들어 몬스터 이미지를 스샷찍어서 해놓으면 그 배경까지 적용이 되는겁니까?
    사소한 바닥 균열이라던가하는 것까지 적용이 되는 것입니까?

  18. Dante 2016.03.15 14:16 신고

    그냥 몬스터 자체의 이미지만 적용이 되는 것입니까?

  19. 시몬 2017.02.25 17:59 신고

    저는 자동 물약을 만들어 볼까 하는데요 ..이미지서치로 하려면 어떻게 응용해야 될지 모르겠어요 ..
    하나가 아니라 두개니까요 .. ㅠㅠ

  20. 바다새 2017.06.20 19:40 신고

    도스 시절 foxpro하고 클리퍼라는 프로그램하고 비슷한가봐요.

  21. 빨간달팽이 2017.12.14 21:32 신고

    정말 잘 보고있고 잘 배우고있습니다.
    혹시 글 작성을 멈추신건가요? 아니면 현재 진행중인건가요?

    • BlogIcon 예지력 2017.12.14 21:33 신고

      현재 좀 바빠서 잠시 멈춘 상태입니다 ㅜ

    • 빨간달팽이 2017.12.15 03:42 신고

      아아 그렇군요!
      천천히 기다리겠습니다 ㅋㅋㅋㅋ
      오토핫키를 처음 배우고있는데 여러군데에서 정보를 얻었었는데 예지력님이 해주시는 설명이 가장 이해하기 쉽고 편해서 매일 이용하고있습니다. 화이팅이에요!

어의는 직관적이고, 실행하기 위한 사전작업이 필요치 않습니다.

 

 

특징

  • ● 사용자 지정값으로 물약복용
  • ● 배고픔, 모든기관 설정수치에 따른 음식섭취
  • ● 사용자설정 자동저장
  • ● 쉬운 인터페이스
  • ● 일시정지 기능
  • ● 최소화(숨겨둔)상태여도 작동

 

업데이트 노트

  • ● 종료시 'APPCRUSH' 오류 해결 (2.4)
  • ● VMWare 등 가상머신에서 실행되도록 수정 (2.4)

 

다운로드 XP버전은 팝업메시지, ui애니메이션을 지원하지 않습니다

XP 유저는 2.4 버전을 계속 이용해주세요.

XP 이상의 운영체제 사용자는 여기를 클릭해 최신버전을 사용하시기 바랍니다.

 

어의 2.4 XP사용자.zip

 

중요

최신버전으로 업데이트 하신경우, '설정초기화'를 하시기를 추천합니다.
수치와 상관없이 '사용X' 인것은 사용하지 않습니다.
배고픔과, 기관수치는 가급적 5 이상으로 설정하세요.

'Deprecated > 어의' 카테고리의 다른 글

어의 2.6 (+XP버전)  (13) 2015.03.13
어의 2.5  (2) 2015.02.15
어의 2.4  (12) 2015.02.05
어의 2.3  (4) 2015.01.22
어의 2.1 다운로드 (+ XP버전)  (5) 2015.01.10
어의 2.0 글자가 짤리는 현상 해결법  (1) 2015.01.08
  1. 핵폭탄 2015.02.06 10:26 신고

    안녕하세요 오랜만에 댓글남김니다 ^^

    추가적으로 생각한것이있는데, 취침 시간을 설정하면 어떨까~ 하는 것입니다.
    한번 생각해보시고 괜찮으시다면 반영해주세요 ㅎㅎ

    • BlogIcon 예지력 2015.02.06 12:18 신고

      네, 안녕하세요 핵폭탄님 ㅋㅋ
      컴퓨터 예약종료를 말씀하시는거죠? 다음 버전때 반영해보도록 하겠습니다

    • 핵폭탄 2015.02.06 13:51 신고

      ㅎㅎ안녕하세요, 아니요 계속 컴퓨터를 켜고 있는분들이 많은데,
      그분들도 어의를 쓰세요 하지만 가끔 까먹고 일시정시를 안하셔서
      음식을 과다 소비하시더군요 .. 그래서 '어의' 예약 종료 기능이 있으면 어떨까 합니다 ~ ㅎㅎ

    • BlogIcon 예지력 2015.02.06 15:02 신고

      아하ㅋ
      사용자가 설정한 시간이후에는 어의를 자동으로 일시정지 상태로 되돌린다.
      이러면 괜찮을까요?

    • 핵폭탄 2015.02.06 15:08 신고

      네 ㅎㅎ 좋아요 ㅎㅎㅎ

  2. 점프폭탄세개 2015.02.11 11:30 신고

    다운받아서 압축해제 하려면.. 지원하지 않는포맷이라고 자꾸 뜨는데...
    어떻게 해야되는건가요 ?

    • BlogIcon 예지력 2015.02.11 16:59 신고

      알집문제라고 알고있고 저도 해결방법은 모르네요 죄송합니다

  3. 이니래 2015.02.12 13:07 신고

    인사말은 어의 종료하고 다시키면 체크가 풀리네요..

  4. 감사 2015.02.14 14:53 신고

    감사합니다 잘쓸게요 ~~~

  5. 낙엽 2015.02.25 17:40 신고

    안녕하세요 2.4 버전을 쓰다가 오늘 다시 켯더니 예지력 홈페이지로 오고 사라졋네요 아이콘이 ㅜㅜ 2.5는 적용이안되구요 ㅜ

Language : AutoHotkey L

Author : jNizM

Function : 로그인창 gui 디자인

Source : http://ahkscript.org/boards/viewtopic.php?f=6&t=3851&start=20

 

Library

Lib.zip

 

 

관련 툴

 

L# 알림.zip

 

 

L# Notify.zip

 

'프로그래밍 > Archive' 카테고리의 다른 글

Animate gif GUI  (0) 2015.02.19
메모리최적화 MemoryInfo  (0) 2015.02.15
로그인 폼디자인  (0) 2015.02.05
파일,폴더 가상화 Virtualization  (14) 2015.02.03
GUI Skinning Method  (0) 2015.02.03
SkinSharp.dll - GUI 스킨  (2) 2015.02.03

 

오토핫키 스크립트 (.ahk) 파일은 오토핫키의 명령어코드가 포함된 소스코드를 말합니다.


오토핫키 설치된 컴퓨터에서는 스크립트파일을 실행할수있지만, 설치되지 않은 컴퓨터에서는 실행이 불가능합니다.

따라서 그러한 경우에는 파일의 형태를 바꾸는 과정이 필요하고


오토핫키 언어로 된 소스파일(.ahk) 을 단독 실행파일(.exe)로 바꾸는 과정이 컴파일입니다.


한번 소스코드를 작성해 실행파일로 컴파일해볼까요?

 

1. 소스파일(.ahk) 작성하기


먼저 바탕화면이나, 폴더에서 빈공간에 마우스 오른쪽 클릭후

메뉴가 나타나면, '새로 만들기' → 'AutoHotkey Scripts' 를 선택하세요.

 

 

새 AutoHotkey Script.ahk 라는 파일이 생성될것입니다. 파일을 오른쪽클릭해, 'Edit Script'를 클릭하세요.

그러면 에디터가 열리고 아래사진과 같은 소스코드를 보게됩니다.

 

 

 

간단한 메시지를 띄워보기 위하여 소스코드를 작성해보겠습니다.

5번줄 이후에 아래 명령어를 적어보세요.

 

MsgBox, 안녕하세요 

 

그리고 실행해보기 위해서 키보드 F5 또는 아래 사진에서 빨간색으로 표시된 지점을 클릭하세요.

 

 

실행결과는 아래와 같습니다.

 

 

 

2. 소스코드 컴파일

 

한번 exe파일로 만들어볼까요?

아래 사진처럼 'Compile' 을 클릭하세요. 폴더에 '새 AutoHotkey Script.exe' 가 생성됩니다.

 

  1. soolty 2015.03.12 02:06 신고

    scite4프로그램으로 script를 편집할 때, 이 블로그에 설명된 대로
    바탕화면-> 우측 클릭 ->새로 만들기 ->AutoHotkey Script
    로 스크립트를 생성 후, 다시 그 생성된 파일을 우측 클릭 -> Edit Script
    과정을 통해 에디트 할 때는 소스코드 작성 과정에 이상이 없는데,
    왜 scite4에서 직접 새 창을 열어서 소스 코드를 작성하게 되면 이상이 생기는거죠? (특히 한글을 쓰게되는 경우)

    비주얼 스튜디오 같은 경우에는 직접 프로젝트를 열고, 거기서 파일 형식을 정하게 되므로
    이것도 그런 형식이라면 에러가 나는 것을 이해할 수 있겠는데,
    이 프로그램은 목적 자체가 AutoHotkey 를 위한 건데, 그렇다면 대부분의 소스가 ***.ahk 확장자를 목적으로
    쓰여지는 게 당연할 텐데, 이 프로그램은 왜 자체적으로 새로운 소스코드를 작성할 때 오류가 생기는 건가요?

    소스파일을 만들려면 꼭 이 바탕화면 새로만들기 과정을 거쳐야 하나요? Scite4 자체적으로 다른 방법은 없을까요?
    실질적으로 제가 궁금한건 사실 이 부분입니다.

    • BlogIcon 예지력 2015.03.12 22:15 신고

      한글은 알파벳과 바이트스가 달라서 유니코드로 인코딩하셔야합니다
      Scite로 새파일 열으셨으면 File - Encoding - UTF-8 With bom 으로 저장해주세요

  2. soolty 2015.03.13 01:23 신고

    아 역시 유니코드 문제였군요. 감사합니다.

  3. EmP 2015.03.15 11:28 신고

    강좌 잘 보고 있읍니다. 감사합니다.

  4. 사라만더 2015.04.16 02:41 신고

    잘보고 갑니다 차근차근 하나씩 배워봐야겟네요 ㅎ

  5. GG 2015.07.20 18:56 신고

    저는 오토핫키 스크립트 에딧 누르면 다른사람들처럼 오토핫키창이 안뜨고 메모장만 뜨는데 어떻게하면 다른사람과 같은 창을띄울 수 있을까요........

  6. 양능호 2015.08.24 12:09 신고

    반복메크로는 에디터실행하고 컴파일한 exe파일하고 실행속도가 차이가 크나요...
    Click과 mouseclick의 차이점 좀 알수있을까요

    • BlogIcon 예지력 2015.08.24 20:18 신고

      실행속도 차이는 없습니다.
      Click은 간단한 마우스클릭(좌)에만 사용되고 MouseClick은 오른쪽, 휠버튼 등 옵션까지 설정가능해요

+ Recent posts