반응형

 

마우스 및 키보드 명령을 지정 윈도우 창에 보내기

 

목차
  1. 비활성 매크로 제작 서론 : 비활성화 / 활성화 매크로의 차이점 과 준비
  2. 비활성 매크로 제작 1 : 프로세스 및 윈도우 창 정의 / 지정 윈도우를 선택할 수 있는  코드 짜기
  3. 비활성 매크로 제작 2 : SmartGui 를 통해 오토핫키 인터페이스 제작 
  4. 비활성 매크로 제작 3 : 마우스 및 키보드 명령을 지정 윈도우 창에 보내기
  5. 비활성 매크로 제작 4 : 비활성 이미지 서치
  6. 비활성 매크로 제작 5 : 사용자 편의를 위한 마지막 인터페이스 구축 및 기타 서브기능

 

 

이전 시간에는 비활성 작업을 위한 프로세스에관한 이야기와 인터페이스를 이야기했습니다,

항상 프로그램을 만들때는 사용자가 사용하기 편한가? 라는 질문을 제 자신에게 하고 제작을합니다 

 

내부적으로 코드상에 프로세스를 적는 것보다는, 사용자가 직접 프로세스를 선택할 수 있어야,

프로그램을 배포할때 다른 프로세스에 사용하는 사용자를 위해 하나씩 수정해줄 필요가 없습니다. 

 

#SingleInstance,Force



title:= "매크로 만들기"
Gui, Add, DropDownList, x12 y9 w160 h20 , DropDownList
Gui, Add, Button, x182 yp w50 h20 , +

Gui, Add, ListView, x12 y69 w220 h260 +grid,no| 내용 | 조작
LV_ModifyCol(1,40) LV_ModifyCol(2,85) LV_ModifyCol(3,80)
LV_SetImageList( DllCall( "ImageList_Create", Int,7, Int,30, Int,0x18, Int,1, Int,1 ), 1 )

Gui, Add, DropDownList, x12 y39 w160 h100 vlists,% process_read()
Gui, Add, Button, x182 yp w50 h20 gre_process,리셋

Gui, Add, Button, x12 y339 w70 h20 +Disabled,이름
Gui, Add, Edit, x92 yp w140 h20 ,

Gui, Add, Button, x12 y369 w220 h20 ,저장하기

Gui, Add, Button, x242 y9 w90 h20 +Disabled, 키보드
Gui, Add, DropDownList, x342 y9 w110 h20 , DropDownList
Gui, Add, Button, x462 y9 w30 h20 , +
Gui, Add, Button, x242 y39 w90 h20 +Disabled, 텍스트
Gui, Add, Edit, x342 y39 w110 h20 ,
Gui, Add, Button, x462 y39 w30 h20 , +
Gui, Add, Button, x242 y69 w90 h20 +Disabled, 마우스 [F1]
Gui, Add, Edit, x342 y69 w50 h20 ,
Gui, Add, Edit, x402 y69 w50 h20 ,
Gui, Add, Button, x462 y69 w30 h20 , +

Gui, Add, Button, x242 y369 w250 h20 ,시작하기

Gui, Show, x821 y389 h409 w503,% title

Return

return
re_process:
gui,submit,NoHide
guicontrol,,lists,% process_read()
return
return
process_read(){
winget,var,list
list_a:= ""
guicontrol,,lists,|
Loop,%var% {
    vartemp := var%A_Index%
    WingetTitle, title, ahk_id %vartemp%
    if (title != ""){
        list_a .= (list_a = "") ? title "||" : title "|"
    }
}
return list_a
}

return
GuiClose:
ExitApp

 

 

 

이전 강의에서 보여드린 프로세스를 잡는 부분은 함수화 시켰습니다.

return
process_read(){	;함수시작
winget,var,list	;프로세스 list 형식으로 호출
list_a:= ""	;list_a 변수초기화
guicontrol,,lists,|	;lists 컨트롤러 초기화
Loop,%var% {		
    vartemp := var%A_Index%
    WingetTitle, title, ahk_id %vartemp%
    if (title != ""){
        list_a .= (list_a = "") ? title "||" : title "|"
    }
}
return list_a
}

return

 

 

 

시작을 함과 동시에 

 

 

Gui 부분에 lists v라벨을 가지고있는 Dropdownlist 항목에

시작시 바로 호출할 수있도록 하였습니다.

 

 

최초 함수를 실행하고나서, 다른 프로세스가 실행되면 프로그램에서는 아직 설정한 것이 없어서 

자동으로 프로세스를 잡지 못합니다. 그럴 경우에 리셋 버튼을 눌러서 새로 프로세스를 탐색하게 하였습니다.

 

...
...
...
Gui, Show, x821 y389 h409 w503,% title

settimer,timer,re_process
Return

return
re_process:
gui,submit,NoHide
guicontrol,,lists,% process_read()
return

 

https://peuming.tistory.com/75

 

오토핫키(AutoHotkey) Settimer (시간설정 - 반복 실행) 설명서

Settimer타이머 ( Settimer ) 명령은 지정한 시간으로 특정 작업을 실행하도록 설정할 수 있는 매우 유용한 기능입니다.SetTimer를 사용하면 주어진 간격마다 특정 라벨(함수)이나 서브루틴을 자동으로

peuming.tistory.com

 

이렇게 settimer를 사용해서 1초마다 프로세스를 불러오게할 수 도 있습니다만

쓸데없는 메모리 소모가 없이, 가벼운 프로그램을 만들기 위해서 버튼으로 처리 하였습니다 

 

 

 

 

자, 이제 키보드, 텍스트, 마우스를 비활성으로 보내기 위해 각각 

GUI 와 연동 및 코드를 작성해야합니다.

 

 

 

 

키보드 및 텍스트 , 마우스 의 값을 Listview에 보내고

실행기점으로 리스트뷰의 항목기준으로 매크로가 작동되게 할 것입니다.

 

단순히, GUI의 키보드 와 텍스트 마우스의 추가 버튼은

사용자가 값을 유동적으로 변경하여 추가할 수 있는 기능만 있다고 보시면됩니다.

 

 

 

 


 

 

 

 

 

키보드 영역

키보드 영역은, 특수키를 입력하는 용도로 사용되며, F1 ~ F12 , Tab 과같은 { } 안에 들어가는 

특수키를 실행시키는 목적으로 사용합니다.

 

키보드 영역 GUI 

Gui, Add, Button, x242 y9 w90 h20 +Disabled, 키보드
Gui, Add, DropDownList, x342 y9 w110 h100 vkeyboard_edit,Tab||Ctrl|alt|F1
Gui, Add, Button, x462 y9 w30 h20 gkey_bt, +

 

Gui 영역에는 DropDownList 에 노출시킬 키를 넣어줍니다

Tab, Ctrl, Alt F1 ...

 

여기서 잠깐, 코드를 보면 드롭다운리스트에 | 를 2개 사용하고 1개사용하는 것을 볼 수 있는데요,

Dropdownlist 의 첫번째 Tab || < 를 두개를 사용한 이유는,

 

 

DDL 을 선택할때 처음 보여지는것과 , 보여지지 않는것의 차이 입니다.

 

 

키보드 영역 G라벨, Key_bt 영역

return
key_bt:
gui,submit,NoHide
LV_add(,LV_GetCount()+1,"키보드",keyboard_edit)
return

 

리스트 뷰 항목에 내용을 추가해주는 코드입니다. 

Key_bt 의 g라벨

gui,submit,nohide

키값 설명
Gui Gui 를 만들고 표시하는, 즉 지정하는 것입니다.
Gui 는 이전 인터페이스 관련 페이지를 참조하시면됩니다.
Submit Gui에서 사용자가 입력한 값을 스크립트의 변수에 저장하는 명령어 입니다.
edit창이나 dropdownlist 에 있는 값을 변수로 가져오는데 사용합니다.
Gui,Submit만 사용하면, 창이 닫히거나 숨김처리 됩니다.
NoHide  옵션을 사용하면서 창을 그대로 유지합니다.

 

즉 현재 인터페이스 GUI 창에 설정된, 입력된 값을 가져오는데 사용됩니다.

 

Lv_Add , 리스트를 추가하는 명령어 입니다

 

LV_getCount()+1 리스트 항목의 갯수를 가져옵니다.거기서,

+1을 해주는 이유는, 현재 갯수에서 +1한 값을 넣기위함입니다

 

"키보드" 나중에 리스트뷰 기점으로 실행되기에, 타입별로 구분을 해주기 위함입니다.

 

keyboard_edit , DropDownlist 의 내용을 담습니다.

 

 

 


 

 

 

텍스트 영역

키보드 영역은, "안녕하세요abcdef!반갑습니다" 와 같은 텍스트를 보내기 위한 용도입니다.

 

 

텍스트영역 GUI 

Gui, Add, Button, x242 y39 w90 h20 +Disabled, 텍스트
Gui, Add, Edit, x342 y39 w110 h20 vtext_Edit,
Gui, Add, Button, x462 y39 w30 h20 gtext_bt, +

 

 

텍스트 영역 G라벨, text_bt 영역

return
text_bt:
gui,submit,NoHide
LV_add(,LV_GetCount()+1,"텍스트",text_Edit)
return

 

 

 

 

 

마지막 마우스 영역은, 2부에서 뵙겠습니다

 

 

 

 

반응형

+ Recent posts