Autohotkey 를 사용하여 정말 다양한 편리한 것들을 만들어서 쓸 수 있는데~ 계속 만들다 보면 오히려 아이디어가 부족해서 못 만드는 경우가 많습니다. 개발을 하면서 정말 다양한 프로그램들을 사용하게 되고 메모장이나 브라우저를 여러개를 열고 사용하는 경우가 많이 있습니다.

아래 포스팅에서 다양한 방법으로 프로그램을 닫는 방법에 대해서 소개를 했었는데~

https://iamaman.tistory.com/1180

https://iamaman.tistory.com/2027

오늘은 제목에서 밝힌 바와 같이 현재 프로그램만 남기고 같은 프로세스 다 닫는 방법에 대해서 소개를 하려고 합니다. 일단 오토핫키 코드는 아래와 같고 단축키는 win + F5 로 설정했습니다.


위 Autohotkey 코드를 실행하고 ~~ 많은 수의 메모장을 열어 보겠습니다. 그리고 그 중에서 하나의 활성화된 메모장을 사용하고 있는 중 나머지 메모장들이 너무 많아서 끄고 싶은 경우를 가정해 보겠습니다.

win + F5 단축키를 눌러 보면 현재 프로세스만 남기고 다른 메모장들은 다 꺼지는 것을 확인할 수 있습니다.





Autohotkey 를 사용하여 특정 폴더에 있는 특정 확장자의 파일 수를 세기 위해 함수를 하나 만들어 봤습니다. Autohotkey 에서는 Loop 문을 통해 특정 확장자 파일 모두에 대해 접근을 할 수 있고 루프를 돌 때마다 A_Index 값이 증가 합니다. 이를 사용하면 파일의 갯수를 셀 수 있습니다. 다수의 특정 확장자 입력을 받을 수 있도록 했습니다.

코드는 다음과 같습니다.






위 코드중 제가 만든 함수는 fileCount() 이고 다음과 같이 폴더와 확장자를 지정하면 해당 폴더에 있는 특정 확장자의 갯수가 몇개인지를 알려 주는 함수 입니다. 확장자는 여러개를 순차적으로 넣으면 되고 아래 예에서는 jpg, png 파일을 찾도록 한 것입니다.

directV=C:\testFolder

N_Files := fileCount(directV, "jpg", "png")

그런데 검색을 조금 해 보니 특정폴더에 파일 개수를 찾기 위해서 Windows COM 을 사용하는 방법도 있더군요. Scripting.FileSystemObject, Shell.Application 등을 사용하는 방법이었으며 해당 방법들을 사용해도 동일한 결과를 얻을 수 있습니다. COM 을 사용하는 예에서 Shell.Application 을 사용하여 Item 의 갯수를 찾는 경우 숨김폴더는 제외한 갯수를 알려 주더군요.



Autohotkey 를 사용하면  화면의 이미지를 검색하고 클릭하는 등의 작업을 할 수 있습니다. 이러한 작업을 하기 위해서는 Autohotkey 의 ImageSearch 함수를 사용하면 됩니다.   


ImageSearch 함수를 사용하기 위해서는 먼저 찾고자 하는  이미지를 캡쳐 해야 합니다. 윈도우 키를 누른 후에 캡처라고  타이핑 해 보면 캡처 도구가 나옵니다. 캡처 도구를 실행한 후에 검색할 이미지 부분을 캡처 합니다.  제 개인적인 경험에 의하면 아래 포스팅에서 소개했던 prtscr 프로그램을 사용해서 캡처 하는 경우 autohotkey 이미지서치 기능이 정상적으로 동작하지 않는 경우가 있었습니다.


http://iamaman.tistory.com/630



그래서 저는 오토핫키 ImageSearch 기능을 사용하는 경우에는 윈도우 캡처 도구를 사용합니다. 그리고  캡쳐 완료 후에는 해당 이미지를 파일로 파일로 저장 합니다.

아래 코드 예는 구글문서의 음성 인식 마이크를 클릭하는 예 입니다. 윈도우 캡처 도구를 사용하여 마이크 모양에 대한 이미지 부분을 캡처 했고 "C:\캡처.PNG" 경로에 저장했습니다.

#NoEnv

SetWorkingDir %A_ScriptDir%

#SingleInstance Force


CoordMode,Pixel, Screen

CoordMode,Mouse, Screen


ImageSearch, FoundX, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, C:\캡처.PNG

If ErrorLevel = 0

{

Click, %FoundX%, %FoundY% Left, 1

}  


ExitApp


위 코드를 실행해 보면 이미지의 좌측 상단  부분으로 마우스 커서가 이동하는 것을 확인할 수 있습니다.


보통의 경우 이미지  서치는 마우스클릭을 하기 위해 동작시키는 것이므로 이미지의  중간 부분을 검출에 되는 것이 편할 겁니다.

이를 위해서는 다음과 같은 코드를 사용하면 됩니다 아래 코드에서 CenterImgSrchCoords() 함수 부분은 Pulover's Macro Creator 를 사용하여 생성한 코드 부분 입니다.

에서 생성한 부분입니다.  

#NoEnv

SetWorkingDir %A_ScriptDir%

#SingleInstance Force


CoordMode,Pixel, Screen

CoordMode,Mouse, Screen


CenterImgSrchCoords(File, ByRef CoordX, ByRef CoordY)

{

static LoadedPic

LastEL := ErrorLevel

Gui, Pict:Add, Pic, vLoadedPic, %File%

GuiControlGet, LoadedPic, Pict:Pos

Gui, Pict:Destroy

CoordX += LoadedPicW // 2

CoordY += LoadedPicH // 2

ErrorLevel := LastEL

}


ImageSearch, FoundX, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, C:\캡처.PNG

CenterImgSrchCoords("C:\캡처.PNG", FoundX, FoundY)

If ErrorLevel = 0

{

Click, %FoundX%, %FoundY% Left, 1

}


ExitApp


CenterImgSrchCoords() 함수의 코드를 확인해 보면 이미지를 로드 한 후에 가로, 세로  폭을 알아내고 해당  폭의 절반을 이미지검색 초기값에  더 해 주는 것을 확인할 수 있습니다.


위 코드를 실행해 보면 다음과 같이 마우스 커서가 검색된 이미지의 중간 부분을 클릭하는 것을 확인 할 수 있습니다.



  1. 2018.03.05 20:42

    비밀댓글입니다

    • 남성 2018.03.05 20:54 신고

      솔직히 질문이 정확히 이해가 안 되네요.
      조금 더 구체적으로 질문해 주셨으면 좋겠습니다.
      구조적으로 비정형화된 텍스트 파일을 매트랩에서 읽고 싶다는 건가요?

Autohotkey 가 설치된 컴퓨터에서는 그냥 Autohotkey 스크립트를 그대로 사용해도 되지만~

 

아래 포스팅에서 소개한 것과 같이 파일을 파라미터로 받는 경우에는 exe 파일로 만들어서 사용하는 게 편리 할 때가 있습니다.

 

그래서 오늘은 다수의 autohotkey 스크립트를 한번에 exe 파일로 만드는 방법에 대해 소개하려 합니다.

 

Autohotkey 를 사용하여 ahk 확장자인 Autohotkey 파일을 실행파일(exe) 파일로 변경하는 방법은 아래 주소에 나와 있듯이 3가지의 방법이 있습니다.

 

http://ahkscript.org/docs/Scripts.htm#ahk2exe

 

첫 번째로는 Convert .ahk to .exe 를 실행해서 다음 그림과 같은 GUI 환경으로 만드는 방법입니다. 이 방법은 한번에 한 개의 Autohotkey 파일만 exe 로 만들 수 있습니다.

 

 

두 번째로는 아래 그림과 같이 Autohotkey 스크립트를 오른쪽 클릭해서 compile 하는 방법입니다. 이 방법으로는 같은 폴더 안에 있는 Autohotkey 스크립트를 다~ 선택한 후에 compile script 를 클릭하면 폴더내의 모든 Autohotkey 스크립트를 exe 로 만들 수 있습니다. 하지만 현재 폴더를 포함하여 하위폴더의 모든 스크립트들을 exe 파일로 만들고 싶을 때는 일일이 하위 폴더에 들어가서 똑 같은 작업을 해줘야 합니다.

 

 

세 번째로는 Ahk2Exe.exe 파일을 사용하여 command line 에서 처리 하는 방법 입니다. Ahk2Exe.exe 파일을 사용하면 현재 폴더 및 하위 폴더의 모든 Autohotkey 스크립트에 대해 exe 파일로 만들 수 있습니다. 이를 위한 Autohotkey 코드는 다음과 같습니다.

 

아래 코드는 C:\Users\Administrator\Downloads\temp 하위의 모든 Autohotkey 스크립트를 compile 하는 Autohotkey 코드 입니다.

 

SetWorkingDir, C:\Program Files\AutoHotkey\Compiler

 

Loop Files, C:\Users\Administrator\Downloads\temp\*.ahk,R

{

    Run %comspec% /c Ahk2Exe.exe /in "%A_LoopFileFullPath%"

}

 

Ahk2Exe.exe 파일은 제 컴퓨터의 경우 C:\Program Files\AutoHotkey\Compiler 에 들어 있습니다. C:\Program Files\AutoHotkey\Compiler 폴더를 path 환경 변수에 설정해도 되겠지만 번거로우니 working directory 를 C:\Program Files\AutoHotkey\Compiler로 했습니다.



+ Recent posts