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

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

https://iamaman.tistory.com/1180

https://iamaman.tistory.com/2027

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


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

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





컴퓨터를 사용하면서  프로그램을 열고 닫는  것은  매우 기본적인 동작입니다.


마우스로 프로그램을 종료해야 하는 경우 운영체제를 불문하고 대부분이 좌/우측 상단에 있는 엑스 표시를 눌러서 프로그램을 종료합니다.


하지만 이런 x 표시는 전체 창 중에서 굉장히 작아서 마우스로 클릭하기 불편한 경우가 많이 있습니다.


그래서 저는 오토핫키를 사용하여 프로그램 창의 아무데나를 누르면 프로그램을 종료하는 단축키를 사용하고 있습니다.


단축키는 마우스 왼쪽과 오른쪽 버튼을 동시에 누르는 것입니다.


오토핫키 코드는 다음과 같습니다.


~LButton & RButton:: MouseGetPos, , ,MouseWin WinClose, ahk_id %MouseWin% return


코드에 대해서 간단하게 설명 드리면, 마우스 위치의 프로그램 ID를  찾은 다음


해당 프로그램을 닫아 주는 것입니다.


코드가 굉장히 짧아서 쉽게 이해할 수 있을 겁니다.



윈도우 컴퓨터를 사용하다 보면 브라우져나 메모장과 같은 프로그램을 많이 열어 놓고 사용하는 경우가 있습니다.

 

이렇게 너저분하게 이것 저것 열어 놓고 사용하다가 작업을 다 완료 하였을 경우에는 필요없는 것들을 한꺼번에 닫아야 할 경우가 생기죠~

 

이런 경우 Autohotkey 의 Group 을 사용하면 대단히 편리하게 필요없는 프로그램들을 관리 할 수 있습니다.

 

저는 아래 그림과 같이 크롬 브라우져가 여러 개 열려 있을 경우에 대해 설명해 보려 합니다.

 

다음과 같이 닫고자 하는 프로그램의 class 를 그룹으로 지정해 줍니다. 아래 코드에서 MyGroup은 임의로 정한 그룹 이름 입니다.

 

GroupAdd, MyGroup, ahk_class Chrome_WidgetWin_1

 

Autohotkey 에서 프로그램의 class 명을 알아보는 방법은 아래 주소에서 참조하시기 바랍니다.

 

2013/05/05 - [programming language/Autohotkey] - Autohotkey 에서 ahk_class 확인하기

 

다음으로 그룹들을 다~ 닫아주는 코드는 다음과 같습니다.

 

WinClose ahk_group MyGroup

Or

GroupClose, MyGroup, A

 

열려 있는 크롬 브라우져에서 제일 늦에 열린 즉, 가장 최근에 사용한 크롬 브라우져만 닫고 싶다면 위 코드에서 A 옵션 대신에 R 옵션을 주면 됩니다. 다음 코드와 같이요~

GroupClose, MyGroup, R

 

위 설명에 따른 전체 코드는 다음과 같습니다. 아래 코드에서는 Win+c 버튼을 누르면 열려 있던 크롬 브라우져가 다 닫히게 됩니다.

 

#c::

GroupAdd, MyGroup, ahk_class Chrome_WidgetWin_1

GroupClose, MyGroup, A

return

 

Autohotkey 의 Group 은 아직까지 GroupAdd 만 있습니다. Group Delete 와 같은 기능은 없기 때문에 아래 코드와 같이 그룹 이름을 동일하게 사용하면 잘못된 동작을 하게 됩니다.

 

< 잘못된 그룹 사용 예 >

#c:: ; win+c 크롬 닫기

GroupAdd, MyGroup, ahk_class Chrome_WidgetWin_1

GroupClose, MyGroup, A

return

 

#d:: ; win+d 익스플로러 닫기

GroupAdd, MyGroup, ahk_class IEFrame

GroupClose, MyGroup, A

return

 

따라서 다른 용도로 그룹을 사용할 때는 꼭!! 다른 그룹 명을 써 줘야 합니다.

< 옳은 그룹 사용 예 >

#c:: ; win+c 크롬 닫기

GroupAdd, MyGroup1, ahk_class Chrome_WidgetWin_1

GroupClose, MyGroup1, A

return

 

#d:: ; win+d 익스플로러 닫기

GroupAdd, MyGroup2, ahk_class IEFrame

GroupClose, MyGroup2, A

return

 

그런데 이와 같이 그룹 명을 계속 바꿔주는게 헷갈리는 경우가 있습니다. 그래서 아래 포럼에서는 GroupInit() 라는 함수를 만들어서 사용하더군요.

 

http://www.autohotkey.com/board/topic/71695-is-there-any-way-to-destroy-delete-a-window-group/

 

GroupInit() 함수는 간단하게 그룹 이름을 알아서 새로 생성하는 겁니다.

 

GroupInit() 함수를 사용하여 위 코드를 다음과 같이 변환 할 수 있습니다.

 

GroupInit(ByRef GroupName){ ; Stores new name

static g:= 1 ; of an empty window group

GroupName:= "Group" g++ ; into the passed variable

}

 

#c:: ; 크롬 닫기

GroupInit(MyGroup)

GroupAdd, %MyGroup%, ahk_class Chrome_WidgetWin_1

GroupClose, %MyGroup%, A

return

 

#d:: ; 익스플로러 닫기

GroupInit(MyGroup)

GroupAdd, %MyGroup%, ahk_class IEFrame

GroupClose, %MyGroup%, A

return

 

위와 같이 하면 하나의 Autohotkey 파일 내에서 동일한 그룹 명(위 예에서는 MyGroup)을 이용하여 다양한 그룹을 제어 할 수 있게 됩니다.


위 코드를 이용하여 구글 크롬과 익스플로러를 한번에 다 닫는 동영상 입니다. 



+ Recent posts