어느 한 개발자에게 가장 많이 사용하는것 3개만 알려달라하니 For 문과 While 반복문 2개와 If 문 인 조건문 1개라고 답하더군요

 

어느 프로그래밍 언어를 사용하시던 이 3개를 잘 사용하시면 좋은 코딩이 될 가능성이 높아질 듯 합니다. 

 

먼저 For 문에 대하여 간단하게 알아보겠습니다. 에디터의 도움말을 보시면 2종류의 For 문이 보이는데 첫번째 항목만 확인해 볼 예정입니다.

 

 

해당 함수의 사용 예제는 다음과 같습니다.

#include <MsgBoxConstants.au3>

For $i = 5 To 1 Step -1
    MsgBox($MB_SYSTEMMODAL, "", "Count down!" & @CRLF & $i)
Next
MsgBox($MB_SYSTEMMODAL, "", "Blast Off!")

 

예제의 For 문은 역순으로 돌아가는 함수 입니다.  5 부터 1까지 거꾸로 숫자가 동작하는 경우엔 이처럼 사용하면 되지만 일반적인 경우는 앞 뒤 숫자를 변경하고 Step를 제거하면 됩니다.

#include <MsgBoxConstants.au3>

For $i = 1 To 5 
    MsgBox($MB_SYSTEMMODAL, "", "Count down!" & @CRLF & $i)
Next
MsgBox($MB_SYSTEMMODAL, "", "Blast Off!")

 

while 함수의 경우 도움말에 2가지 예제가 있습니다.

첫번째 while 의 경우 조건문을 넣어서 특정 조건이 되면 반복문이 종료 되도록 하는 예제 입니다. 이런 조건을 넣는 경우엔 개인적으로 For문을 사용하는 경우가 좀더 많았던 것 같습니다. 

#include <MsgBoxConstants.au3>

Local $i = 0
While $i <= 10
    MsgBox($MB_SYSTEMMODAL, "", "Value of $i is: " & $i)
    $i = $i + 1
WEnd

 

 

 

두번째는 while 1 을 사용해서 특정 조건이 될때까지 계속 유지되는 조건문 입니다.  여기서 밖으로 나가지는 조건만운 hotkeyset을 esc 로 등록하여 해당 키가 나가면 while 문이 종료 되고 종료 되기 전에는 Tooltip를 지속적으로 출력하도록 하였습니다.

; Set the Escape hotkey to terminate the script.
HotKeySet("{ESC}", "_Terminate")

Example()

Func Example()
    ; Initialize a Local variable.
    Local $aMgp = 0

    ; Create an endless loop, 1 will always be 1 therefore True.
    While 1
        ; Assign a Local variable the coords of the cursor (array).
        $aMgp = MouseGetPos()

        ; Display a tooltip near the cursor with its coords.
        ToolTip("x: " & $aMgp[0] & ", y: " & $aMgp[1], $aMgp[0] + 10, $aMgp[1] + 10)

        ; Avoid high CPU usage.
        Sleep(50)
    WEnd
EndFunc   ;==>Example

Func _Terminate()
    Exit
EndFunc   ;==>_Terminate

 

hotkeyset 관련 추가적인 정보는 하단 링크를 참조하세요.

[ Autoit ] 핫키(단축키) 생성하기

 

[ Autoit ] 핫키(단축키) 생성하기

버튼이 아닌 단축키로 동작하기 위해서 핫키를 지정해서 넣을 수 있습니다. Autoit 편집기를 실행 후 [ File ] > [ New ] 하여 빈 문서를 생성하여 저장 후 [ F1 ] 키를 누르세요.  도움말이 표시되면 ��

smart-west.tistory.com

 

특정 위치의 색상값을 추출하는 방법에 대하여 알아보려 합니다. 이전 Pixel 관련 블로그 내용과 해당 방법을 연계하면 실시간으로 색상을 추출하여 추적하는 도구 제작이 가능합니다.

 

[ 색상 값 마우스 추출 하기 ]

smart-west.tistory.com/40

 

[ Autoit ] 특정 색상 추적하여 해당 색상 자동으로 클릭하기

먼저 내가 원하는 색상의 정확한 값을 구하는 방법은 하단 툴을 통해 구해올 수 있습니다. smart-west.tistory.com/24 [ Autoit ] Au3Info.exe 를 활용하여 외부 프로그램 정보 얻기 자동화를 위해서는 사용하�

smart-west.tistory.com

 

이번에 이용할 함수는 PixelGetColor 함수 입니다. 도움말에서 해당 함수를 찾아서 예제를 구해 옵니다. Autoit 편집기에서 빈 문서를 열고 예제 코드를 붙여 넣은 후 저장해주세요.

#include <MsgBoxConstants.au3>

Local $iColor = PixelGetColor(10, 100)

MsgBox($MB_SYSTEMMODAL, "", "The decimal color is: " & $iColor)
MsgBox($MB_SYSTEMMODAL, "", "The hex color is: " & Hex($iColor, 6))

 

해당 코드를 동작하면 2번에 걸쳐 메세지 박스가 나타나게 됩니다. 마우스 추적 클릭을 위해서는 처음처럼 구해온 값을 그대로 사용 하셔도 됩니다.

 

Local $xxx = 210
Local $yyy = 100
Local $iColor = PixelGetColor($xxx, $yyy)
MouseMove($xxx, $yyy)
Local $aCoord = PixelSearch(0, 0, 500, 300, $iColor)
If Not @error Then
	MouseMove($aCoord[0] , $aCoord[1])
EndIf

 

간단한 응용 프로그램을 제작해 봤습니다. x 값과 y 값을 각각 지정하여 특정 위치의 색상 값을 구한 후 구해진 색상의 시작 지점(왼쪽위 기준)으로 마우스를 이동 시키는 코드 입니다.

 

 

도서 추천

https://www.millie.co.kr/v3/bookDetail/179592953?referrer=searchResult

 

AutoIt을 활용한 업무 자동화

배우기 쉬운 프리웨어 자동화 언어인 AutoIt을 사용하여 업무를 자동화 합니다. 이 책은 프로그래밍에 대한 지식이나 이론적인 부분을 살펴보기보다는 ..

www.millie.co.kr

 

 

https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000005138322

 

AutoIt을 활용한 업무 자동화 | PlanB | 스프링드림- 교보ebook

단순하지만 반복적이고 손이 많이 가는 업무를 진행하고 있나요? 업무 자동화를 꿈꾸지만 프로그래밍을 모르는 비전공자라서 시작을 두려워 하고 있지 않은가요? 프로그래밍을 잘 몰라도 예제

ebook-product.kyobobook.co.kr

 

먼저 내가 원하는 색상의 정확한 값을 구하는 방법은 하단 툴을 통해 구해올 수 있습니다.

 

smart-west.tistory.com/24

 

[ Autoit ] Au3Info.exe 를 활용하여 외부 프로그램 정보 얻기

자동화를 위해서는 사용하는 프로그램의 정보가 필수 적인 경우가 많은데요. 이 정보를 얻기위해 Autoit에서는 기본적인 프로그램을 제공하고 있습니다. 기본 경로에 설치 하였다면 하단 경로에

smart-west.tistory.com

 

Finder Tool 항목을 마우스 드래그 하여 해당 위치로 이동 시키면 mouse 의 Color 에서 숫자로 된 색상 값을 구해 올 수 있습니다.

 

특정 위치의 색을 추적하여 변하는 것을 인식하여 동작하는 툴을 제작하기 위해 쉽게 사용 가능한 함수는 PixelSearch 함수 입니다. 도움말에서 해당 함수를 찾아서 예제를 구해 옵니다. Autoit 편집기에서 빈 문서를 열고 예제 코드를 붙여 넣은 후 저장해주세요.

 

 

#include <MsgBoxConstants.au3>

; Find a pure red pixel in the range 0,0-20,300
Local $aCoord = PixelSearch(0, 0, 20, 300, 0xFF0000)
If Not @error Then
    MsgBox($MB_SYSTEMMODAL, "", "X and Y are: " & $aCoord[0] & "," & $aCoord[1])
EndIf

; Find a pure red pixel or a red pixel within 10 shades variations of pure red
$aCoord = PixelSearch(0, 0, 20, 300, 0xFF0000, 10)
If Not @error Then
    MsgBox($MB_SYSTEMMODAL, "", "X and Y are: " & $aCoord[0] & "," & $aCoord[1])
EndIf

 

코드 설명을 드리자면 PixelSearch 함수 뒤에 4개의 숫자는 추적 위치를 나타냅니다.

 

그 뒤에 숫자가 색상 값입니다. Finder Tool 에서 구한 색상 값을 여기 넣으면 됩니다.

현재는 마우스 위치가 메세지 박스로 표시 되지만 이 항목을 마우스 클릭으로 연결하면 해당 위치를 클릭하게 됩니다. ( 하단 스크립트는 메세지 박스를 주석처리하고 마우스 클릭으로 교체 하였습니다. )

Local $aCoord = PixelSearch(0, 0, 20, 300, 0xFF0000)
If Not @error Then
;~     MsgBox($MB_SYSTEMMODAL, "", "X and Y are: " & $aCoord[0] & "," & $aCoord[1])
	MouseClick("left" , $aCoord[0] , $aCoord[1])
EndIf

 

색상 값을 미세하게 클릭하는 경우도 있지만 유사한 색을 추적하여 클릭할 때 사용 할 수도 있습니다.  두번째 예제는 이러한 유사한 값을 추적하여 클릭하는 항목 입니다. 유사한 값의 범위는 색상 값 뒤에 넣으면 됩니다. 

 

 

만약 While 문과 함께 사용 한다면 특정 범위에서 내가 원하는 색이 나타나면 클릭 후 종료 되도록 사용 가능합니다. 하단 코드는 특정 구역에 찾고자 하는 색이 나타날 때 까지 확인하다가 색이 나타나면 클릭 후 종료되는 스크립트 입니다.

While 1
	Local $aCoord = PixelSearch(0, 0, 20, 300, 0xFF0000)
		MouseClick("left" , $aCoord[0] , $aCoord[1])
		ExitLoop
	EndIf
	Sleep(1)
WEnd

 

만약 특정 위치의 화면이 변화가 있는 경우 동작하는 코드를 넣고 싶으시다면 하단 내용을 참고하시면 됩니다.

smart-west.tistory.com/37

 

[ Autoit ] 화면 색상 변화 인식하기

특정 위치의 색이 변하는 것을 인식하여 동작하는 툴을 제작하기 위해 쉽게 사용 가능한 함수는 PixelChecksum 함수 입니다. 도움말에서 해당 함수를 찾아서 예제를 구해 옵니다. Autoit 편집기에서 ��

smart-west.tistory.com

 

최대 5개의 동작을 연속해서 해주는 도구 입니다. 단축키를 지정하셔도 되며, 특정 프로그램 실행을 연결 할 수 도 있습니다.

하나의 단축키로 5개를 모두 동작 시킬수도 있으며, 5개 모두 각각 지정하여 사용할 수도 있습니다.

 

하단 파일의 압축을 해제 하면 3개의 파일이 나타납니다. 이중 ShortKey_Info.ini 파일을 원하시는 방향으로 편집해서 사용 하시면 됩니다. ( 메모장으로 열어서 편집하면 됩니다. )

기본값은 다음과 같습니다.

[Info_1]
ShortKey_Info=Ctrl + q
Run_Info=Ctrl + a
[Info_2]
ShortKey_Info=Ctrl + q
Run_Info=Ctrl + c
[Info_3]
ShortKey_Info=Ctrl + q
Run_Info=Ctrl + v
[Info_4]
ShortKey_Info=Ctrl + q
Run_Info=Ctrl + v
[Info_5]
ShortKey_Info=Ctrl + q
Run_Info=G:\TestCode\test.exe

 

동작 내용중 ShortKey_Info 값은 단축키를 의미 합니다. 지금은 Ctrl + q를 지정했으므로 Ctrl + q 입력 시 5개의 동작을 연속해서 진행하게 됩니다. 

단축키와 함께 동작 가능한 옵션 키 4개는 다음과 같습니다. 만약 옵션키를 지정하지 않는 경우 단순 타자 입력등에도 지정된 동작이 일어날 수 있으므로 추천드리지 않습니다. ( ex : c 만 단축키로 지정 한 경우 copy 입력 시 매크로 동작함)

  • Alt 
  • Ctrl
  • Shift
  • Win

Run_Info 값의 경우 동작하는 값입니다. 현재 위의 값 기준으로는 Ctrl + q 를 누르면

  1. Ctrl + a > 전체 선택  후 
  2. Ctrl + c > 선택 내용 복사 후
  3. Ctrl + v > 복사 내용 붙여넣기 ( 1회 째 ) 후 - 전체선택 된 상태이므로 기존 내용이 지워지며 붙여 넣기 되어 눈으로는 차이를 알 수 없음
  4. Ctrl + v > 복사 내용 붙여넣기 ( 2회 째 ) 후
  5. 지정한 프로그램을 실행 합니다. - 해당 실행 파일이 존재하는 경우에만 실행 됩니다. 

 

동작 화면 : 

 

해당 프로그램 실행 시 1번 모니터 우측 하단에 Ctrl + Shift + f8 이 표시 되는데 해당 키는 프로그램 종료 키 입니다.

 

결과 실행 파일 : - 주의사항 : 아래 EXE 파일은 위 소스를 EXE로 변경하여 빠른 실행을 도와 주는 파일입니다.  인터넷에서 다운 받은 EXE의 경우 보안알림이 뜰 확률이 매우 높습니다. 대부분의 보안알림은 경고성 안내이며 절대적인 문제 사항을 찾아서 알려주는 것은 아닙니다. 

하단 Build.zip파일 압축 해제 후 사용해주세요.

 

Build.zip
0.58MB

특정 위치의 색이 변하는 것을 인식하여 동작하는 툴을 제작하기 위해 쉽게 사용 가능한 함수는 PixelChecksum 함수 입니다. 도움말에서 해당 함수를 찾아서 예제를 구해 옵니다. Autoit 편집기에서 빈 문서를 열고 예제 코드를 붙여 넣은 후 저장해주세요.

 

#include <MsgBoxConstants.au3>

; Wait until something changes in the region 0,0 to 50,50

; Get initial checksum
Local $iCheckSum = PixelChecksum(0, 0, 50, 50)

; Wait for the region to change, the region is checked every 100ms to reduce CPU load
While $iCheckSum = PixelChecksum(0, 0, 50, 50)
    Sleep(100)
WEnd

MsgBox($MB_SYSTEMMODAL, "", "Something in the region has changed!")

 

 

해당 코드는 해당 위치의 값(색)이 변화가 있는 경우  메세지 박스가 나오는 도구 입니다. 

4개의 숫자 중 앞의 두  0 , 0 은 시작 지점입니다 왼쪽 값 위쪽값 입니다. 왼쪽 모니터 제일 위쪽이 시작 값이라고 생각하시면 됩니다. 

시각 적으로 가장 쉽게 확인 가능한 방법은 마우스 이동시켜 보는 방법입니다.

MouseMove( 0 , 0 ) 

 

3번째 숫자 값과 4번째 숫자값도동일합니다. 마우스이동으로 위치를 확인 해주세요.

MouseMove( 0 , 0 ) 
MouseMove( 50 , 50 ) 

 

처음 가져온 코드를 F5로 동작시킨 후 0,0,50,50 위치에 변화를 주면 변화가 발생했다는 대화상자가 나타납니다. 가장 쉬운 변화 중 하나는 해당 위치에 메모장을 이동시켜 보는 동작도 괜찮습니다.

 

이걸 응용하여 내가 지정한 위치가 변한다면 단축키를 보내거나 마우스 움직임을 넣는 방식도 응용 가능합니다.

단축키 동작 방식 : 

smart-west.tistory.com/22?category=923312

 

 

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

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

smart-west.tistory.com

 

마우스 입력 방식  : 

[ Autoit ] 마우스 컨트롤 하기 #1 - 기본편

 

[ Autoit ] 마우스 컨트롤 하기 #1 - 기본편

기본적인 마우스의 움직임을 조절하기 위해서는 MouseMove를 이용합니다. 원하는 위치로 이동시키기 위해서는 좌측값과 상단 값을 지정하여 이동하면됩니다. MouseMove( 350 , 250 ) 간단한 숫자를 입력

smart-west.tistory.com

 

일정 시간 마다 ( 초 ) 소리가 나는 툴을 만들어 보려 합니다.

 

Bat 파일로 시간(초) 값을 전달하며 관련 값을 전달 하는 경우 해당 시간 경과 후 알람 소리를 발생시키게 됩니다. 총 3개의 파일로 구성되어 있습니다.

Run_Time.bat 파일을 메모장으로 편집하여 저장하면 되며, 3번째 숫자는 꼭 숫자 값으로 입력해야 합니다. 60초는 1분 이며, 초 단위로 계산해서 숫자를 입력하시면 됩니다. 만약 5분 마다 알람이 필요한 경우 300 을 입력하면 됩니다. 앞의 변수는 건들지 마시고 숫자값(초) 만 변경하며 사용하시면 됩니다. 

 

bat 파일을 메모장으로 열어서 시간값은 자유롭게 편집 가능하며, 지정된 시간 마다 알람 소리가 나타나게 됩니다. 알람소리 파일은 Alert.MP3 이며, 소리교체할 경우 해당파일을 동일한 파일명으로 교체 하면 됩니다.

 

 

결과 실행 파일 : - 주의사항 : 아래 EXE 파일은 위 소스를 EXE로 변경하여 빠른 실행을 도와 주는 파일입니다.  인터넷에서 다운 받은 EXE의 경우 보안알림이 뜰 확률이 매우 높습니다. 

 

Time_Alert.zip
0.60MB

 

만약 프로그램을 실행 할 때 중복해서 계속 실행해도 되는 프로그램이 있지만 1번만 실행되면 중복해서 실행되지 않아야 하는 프로그램도 있습니다.

 Autoit 편집기의 도움말에서 _Singleton의 Example 를 가져오면 다음과 같은 내용을 확인 할 수 있습니다.

#include <Misc.au3>
#include <MsgBoxConstants.au3>

If _Singleton("test", 1) = 0 Then
    MsgBox($MB_SYSTEMMODAL, "Warning", "An occurrence of test is already running")
    Exit
EndIf
MsgBox($MB_SYSTEMMODAL, "OK", "the first occurrence of test is running")

 

해당 예제의 동작 확인을 하는 방법은 우선 해당 스크립트내용을 빈 문서에 붙여 넣은 후 test.au3로 저장 합니다. 

그 후 상단 메뉴 Tool > Build 를 눌러주시면 test.exe 파일생성 된 것을 확인 할 수 있습니다.

이제 test.exe 를 처음 실행해 봅니다.

처음 실행 한 대화상자를 닫지 않은 상태로 다시 한번 test.exe를 실행합니다. 

 

실행 된 상태에서 다시 실행 하면 중복 실행 되었다며 경고 대화상자가 나타나게 됩니다.  예제 코드를 응용하면 중복 실행 방지 코드로 다음과 같이 사용이 가능합니다.

#include <Misc.au3>
if _Singleton(@ScriptName,1) = 0 Then Exit 

 

중복실행되면 안되는 프로그램에 위의 코드를 넣어준다면 중복 실행되지 않고 이미 실행 된 경우 조용히 종료되는 프로그램을 만들 수 있습니다.

추가적인 팁으로는 핫키(단축키) 생성 전에 해당 코드를 삽입 해주셔야 합니다.  ( 핫키 관련 정보는 하단 링크 참조 ) 

[ Autoit ] 핫키(단축키) 생성하기

 

[ Autoit ] 핫키(단축키) 생성하기

버튼이 아닌 단축키로 동작하기 위해서 핫키를 지정해서 넣을 수 있습니다. Autoit 편집기를 실행 후 [ File ] > [ New ] 하여 빈 문서를 생성하여 저장 후 [ F1 ] 키를 누르세요.  도움말이 표시되면 ��

smart-west.tistory.com

만약 핫키(단축키) 생성 후 종료코드를 넣게 되면 뒤에 실행 된 프로그램이 핫키를 가져온 후 종료되어 이전 프로그램에서 단축키 동작이 올바르게 동작하지 않을 가능성이 높습니다.

 

 

+ Recent posts