이번에는 Winmove를 활용하여 메모장을 원하는 위치에 크기로 이동 하는 방법을 알아보겠습니다. 

 

[ Autoit ] Send로 키보드 값 입력하기 #1 - 기본편

 

[ Autoit ] Send로 키보드 값 입력하기 #1 - 기본편

RPA 자동화를 위해 키 값을 입력하는데 활용하는 Send에 대하여 알아보겠습니다. Autoit 편집기를 실행 후 [ File ] > [ New ] 하여 빈 문서를 생성하여 저장 후 [ F1 ] 키를 누르세요.  도움말이 표시되��

smart-west.tistory.com

 

  • Autoit 편집기를 실행 후 [ File ] > [ New ] 하여 빈 문서를 생성하여 저장 후 [ F1 ] 키를 누르세요.
  •  도움말이 표시되면 좌측에 [ 내용 ] 항목 탭을 선택 후 WinMove를 선택합니다. 그럼 우측에 세부 내용이 표시됩니다.

  • 이번에도 역시 하단 Example 를 복제하여 편집기 빈 문서에 붙여 넣어 줍니다.
Example()

Func Example()
    ; Run Notepad
    Run("notepad.exe")

    ; Wait 10 seconds for the Notepad window to appear.
    Local $hWnd = WinWait("[CLASS:Notepad]", "", 10)

    ; Retrieve the position as well as the height and width of the Notepad window. We will use this when we have to move the window back to the original position.
    Local $aPos = WinGetPos($hWnd)

    ; Move the Notepad to the x, y position of 0, 0 and set the height and width at 200, 200.
    WinMove($hWnd, "", 0, 0, 200, 200)

    ; Wait for 2 seconds to display the new position of the Notepad window.
    Sleep(2000)

    ; Move the Notepad window back to the original position by using the array returned by WinGetPos.
    WinMove($hWnd, "", $aPos[0], $aPos[1], $aPos[2], $aPos[3])

    ; Wait for 2 seconds to display the original position of the Notepad window.
    Sleep(2000)

    ; Close the Notepad window using the handle returned by WinWait.
    WinClose($hWnd)
EndFunc   ;==>Example

 

  • 이제 한줄씩 동작에 대하여 알아보고자 합니다.   Run은 프로그램을 실행 할때 사용합니다. 메모장은 notepad.exe 를 Run으로 실행해 주면 됩니다.  이전에는  Send("#r")  을 이용한 실행을 했으나 이번에는 Run을 통해 메모장을 실행하고 있습니다. 다양한 실행 방법을 경험하시면 추후 사용의 선택범위가 늘어나므로 다양한 방식의 실행을 한번씩 해보시는걸 추천드립니다.
 Run("notepad.exe")

 

  • 두번째 줄은 메모장의 실행을 기다리는 명령어 입니다. 클래스를 기반으로 기다리므로 언어의 영향을 받지 않고 기다릴 수 있습니다. 맨 뒤에 10이란 숫자는 최대 10초를 기다린다는 의미 입니다. 해당 동작을 진행하기 전에 모든 메모장을 종료 한 상태에서 진행해야 올바른 결과를 확인 할 수 있습니다. 
  Local $hWnd = WinWait("[CLASS:Notepad]", "", 10)

 

  • 세번째 줄은 현재 실행된 메모장의 핸들을 이용하여 크기와 위치를 구해오는 명령어 입니다. 
    Local $aPos = WinGetPos($hWnd)

 

  • 네번째 줄은 메모장의 핸들을 이용해서 강제로 위치와 크기를 이동하는 명령어 입니다. 
WinMove($hWnd, "", 0, 0, 200, 200)

 

  • 다섯번째 줄은 2초간 대기하는 명령어 입니다. PC의 성능에 따라 명확한 2초가 아닐수도 있습니다. 대략 2초로 생각하시는게 좋습니다. sleep를 기준으로 시간을 기록하는 프로그램을 만드는 경우 (추후 부터는 Sleep는 설명에서 제외 할 예정입니다.)
Sleep(2000)

 

  • 여섯번째 줄은 최초 실행시 얻어온 위치와 크기로 다시 원복하는 코드 입니다. 2초 대기 시간은 덤 입니다.
WinMove($hWnd, "", $aPos[0], $aPos[1], $aPos[2], $aPos[3])
Sleep(2000)

 

 

마지막 줄은 메모장의 핸들을 이용해서 메모장을 종료명령을 진행하는 코드 입니다.

 WinClose($hWnd)

 

동작 화면 : 실행 후 최초 크기를 좀더 보기 위해 Sleep(2000)을 메모장 실행 후 추가 하였습니다. 

 

 

결과 소스 파일 :

winmove.au3
0.00MB

 

 

결과 실행 파일 : - 주의사항 : 아래 EXE 파일은 위 소스를 EXE로 변경하여 빠른 실행을 도와 주는 파일입니다.  인터넷에서 다운 받은 EXE의 경우 보안알림이 뜰 확률이 매우 높습니다. 관련 메세지가 불안하신 경우 위에 AU3 파일이나 아래 스크립트 소스를 이용해서 직접 빌드해서 사용하시면 됩니다. 

winmove.exe
0.83MB

 

+ Recent posts