여러개의 배열이 있는 경우 원하는 위치로 밀어 넣는 방법에 대하여 알아보고자 합니다.

 

먼저 테스트를 위한 기본 배열 2개를 생성합니다.

#include <Array.au3>

Local $avArrayTarget[9] = [1, 2, 3, 4, 5, 6, 7, 8, 9]
Local $avArraySource[2] = [100, 200]

 

2개의 배열을 각각 열어보면 다음과 같습니다.

 

첫번째 배열은 1~9까지의 숫자입니다.

두번째 배열을 100과 200 2개의 값을 가진 배열 입니다.

 

첫번째 배열에 두번째 배열을 밀어넣어 보겠습니다.

_ArrayPush($avArrayTarget, $avArraySource)

다음코드의 결과는 다음과 같습니다.

첫번째 배열 크기가 변하지 않고 아래쪽에 붙게 되므로 기존 값중 제일 상단 값 2개가 사라진 것을 확인 할 수 있습니다.

1과 2가 밀려서 사라지고 3부터 배열값이 시작되며, 뒤에 2개의 값인 100과 200이 추가 되었습니다.

 

_ArrayPush($avArrayTarget, $avArraySource, 1)

_ArrayPush 뒤에 숫자 1을 붙이게 되면 다음과 같은 변화가 나타납니다. 왼쪽에 값을 붙여서 첫번째 배열 값이 우측으로 밀려나며 끝자리 숫자 2개가 사라지게 됩니다. 

8과 9 값이 밀려서 사라진 것을 확인 할 수 있습니다.

배열에 배열을 추가하는 것이 아닌 첫번째 배열에 일반 텍스트 추가도 가능합니다.

_ArrayPush($avArrayTarget, "Hello world!", 1)

 

다음과 같이 텍스트 추가의 결과는 다음과 같습니다.

 

 

도서 추천

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/52

 

[ Autoit ] Array ( 배열 ) 추가하기

도움말의 ArrayAdd 로 검색하면 다음과 같은 예제가 나타납니다. #include Local $aArray, $sFill Local $aArray_Base[2][2] = [["Item 0 - 0", "Item 0 - 1"], ["Item 1 - 0", "Item 1 - 1"]] _ArrayDisplay($aAr..

smart-west.tistory.com

 

단순히 마우스의 위치나 제품 핸들 값을 통한 크기값을 가져와도 모두 배열 값으로 돌아오게 됩니다.

이러한 배열 값을 효과적으로 사용 하는 방법을 익히면 보다 효율적인 코딩이 가능해 집니다.

 

오늘 확인할 예제 코드는 다음과 같습니다.

#include <Array.au3>
#include <MsgBoxConstants.au3>

Local $iIndex

Local $aArray[5][2]
For $i = 0 To 4
	For $j = 0 To 1
		$aArray[$i][$j] = "#" & $i & $j
	Next
Next
_ArrayDisplay($aArray, "Array")

; Search col 0
$iIndex = _ArrayBinarySearch($aArray, "#10", 0, 0, 0)
MsgBox($MB_SYSTEMMODAL, "Index", $iIndex)

; Search col 1
$iIndex = _ArrayBinarySearch($aArray, "#31", 0, 0, 1)
MsgBox($MB_SYSTEMMODAL, "Index", $iIndex)

 

먼저 기본적인 배열 구조는 다음과 같습니다.

배열이 표시되는 내용 까지 코드는 다음과 같습니다.

#include <Array.au3>
#include <MsgBoxConstants.au3>

Local $iIndex

Local $aArray[5][2]
For $i = 0 To 4
	For $j = 0 To 1
		$aArray[$i][$j] = "#" & $i & $j
	Next
Next
_ArrayDisplay($aArray, "Array")

 

 

첫번째 검색의 경우 "#10" 을 검색하는 코드 입니다.

; Search col 0
$iIndex = _ArrayBinarySearch($aArray, "#10", 0, 0, 0)
MsgBox($MB_SYSTEMMODAL, "Index", $iIndex)

 

 

해당 검색 항목은 첫번째 줄을 검색해주게 됩니다. 검색한 항목은 Row1에 위치한 값입니다.

 

 

 

검색 결과는 대화상자로 표시 되며 줄수가 표시 됩니다. 줄수기준은 0 부터 시작하므로 1번째 줄 값인 1이 표시 되는것을 확인 할 수 있습니다.

 

 

 

두번째 검색내용은 다음과 같습니다.

 

; Search col 1
$iIndex = _ArrayBinarySearch($aArray, "#31", 0, 0, 1)
MsgBox($MB_SYSTEMMODAL, "Index", $iIndex)

두번째 줄인 Col1을 검색해 줍니다.

 

그 후 검색을 할 내용은 #31입니다.

 

해당 내용을 진행한 결과는 다음과 같습니다.

줄수나 칸수는 0부터 시작한다는걸 기준으로 4번째 줄인 Row3에 해당값이 위치하여 3이 결과 값으로 출력 됩니다.

 

도서 추천

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

 

도움말의 ArrayAdd 로 검색하면 다음과 같은 예제가 나타납니다.

 

#include <Array.au3>

Local $aArray, $sFill

Local $aArray_Base[2][2] = [["Item 0 - 0", "Item 0 - 1"], ["Item 1 - 0", "Item 1 - 1"]]
_ArrayDisplay($aArray_Base, "2D - Base array")

; Add item delimited string
$aArray = $aArray_Base
$sFill = "New Item 2 - 0|New Item 2 - 1"
_ArrayAdd($aArray, $sFill)
_ArrayDisplay($aArray, "2D - Item delimited")

; Add row delimited string - load in col 1
$aArray = $aArray_Base
$sFill = "New Item 2 - 1" & @CRLF & "New Item 3 - 1"
_ArrayAdd($aArray, $sFill, 1)
_ArrayDisplay($aArray, "2D - Row Delimited")

; Add item & row delimited string
$aArray = $aArray_Base
$sFill = "New Item 2 - 0|New Item 2 - 1" & @CRLF & "New Item 3 - 0|New Item 3 - 1"
_ArrayAdd($aArray, $sFill)
_ArrayDisplay($aArray, "2D - Item & row Delimited")

; Add a 2D array
$aArray = $aArray_Base
Local $aFill[2][2] = [["New Item 2 - 1", "New Item 2 - 2"], ["New Item 3 - 1", "New Item 3 - 2"]]
_ArrayAdd($aArray, $aFill)
_ArrayDisplay($aArray, "2D - 2D Array")

; Add a 2D array - Single item/column - load in col 1
$aArray = $aArray_Base
Local $aFill[2][1] = [["New Item 2 - 1"], ["New Item 3 - 1"]]
_ArrayAdd($aArray, $aFill, 1)
_ArrayDisplay($aArray, "2D - 2D Array")

 

다음 배열의 항목들이 동작하는 순서를 위에 코드를 기반으로 알아보려 합니다.

#include <Array.au3>

Local $aArray, $sFill

Local $aArray_Base[2][2] = [["Item 0 - 0", "Item 0 - 1"], ["Item 1 - 0", "Item 1 - 1"]]
_ArrayDisplay($aArray_Base, "2D - Base array")

최초 설정배열 값은 다음과 같습니다. 이것은 베이스 값으로 계속 재사용 될 예정입니다. 이 값을 1번 배열이라 호칭하겠습니다.

2 * 2 배열에 4개의 값이 각각 추가되어 있는 것을 확인 할 수 있습니다.

 

 


 

 

 

; Add item delimited string
$aArray = $aArray_Base
$sFill = "New Item 2 - 0|New Item 2 - 1"
_ArrayAdd($aArray, $sFill)
_ArrayDisplay($aArray, "2D - Item delimited")

 

두번째 표시되는 배열 값은 배열값을 하단에 추가하는 방법 입니다. 1번 배열을 새로운 배열 변수에 담은 후 ( 원본인 1번 재열 값은 건드리지 않음 ) 하단에 값을 추가 하였습니다.

 

 

 


; Add row delimited string - load in col 1
$aArray = $aArray_Base
$sFill = "New Item 2 - 1" & @CRLF & "New Item 3 - 1"
_ArrayAdd($aArray, $sFill, 1)
_ArrayDisplay($aArray, "2D - Row Delimited")

1번 배열값을 다시 담은 후 하단에 배열을 추가 합니다. 가로 줄이 아니라 세로로 값을 추가 합니다. 특징은 col 0번 제일 앞줄이 아닌 col 1번인 라인에 값을 추가합니다.

 

 


 

; Add item & row delimited string
$aArray = $aArray_Base
$sFill = "New Item 2 - 0|New Item 2 - 1" & @CRLF & "New Item 3 - 0|New Item 3 - 1"
_ArrayAdd($aArray, $sFill)
_ArrayDisplay($aArray, "2D - Item & row Delimited")

이번엔 기본 배열값 하단에 4개의 값을 추가합니다. 

 

 


; Add a 2D array
$aArray = $aArray_Base
Local $aFill[2][2] = [["New Item 2 - 1", "New Item 2 - 2"], ["New Item 3 - 1", "New Item 3 - 2"]]
_ArrayAdd($aArray, $aFill)
_ArrayDisplay($aArray, "2D - 2D Array")

 

위의항목과 결과는 동일하지만 위에는 String 값을 기호와 함께 추가 했다면 이번엔 배열에 배열을 추가한 것을 확인 할 수 있습니다.

 


; Add a 2D array - Single item/column - load in col 1
$aArray = $aArray_Base
Local $aFill[2][1] = [["New Item 2 - 1"], ["New Item 3 - 1"]]
_ArrayAdd($aArray, $aFill, 1)
_ArrayDisplay($aArray, "2D - 2D Array")

 

3번째 배열과 동일한 방법 입니다. 

위에는 String 값이였지만 이번에는 배열에 배열로 추가할 수 있습니다.

 

 

 

 

 

 

 

 

자동화를 적용하기 위해 현재 모니터의 크기를 구하는 방법에 대하여 알아보고자 합니다.

 

기본적인 모니터의 크기중 좌/우의 폭을 구하는 함수는 @DesktopWidth 입니다.

위 / 아래의 높이를 구하는 함수는 @DesktopHeight 입니다.

 

해당 모니터 크기가 올바른지 확인하는 방법 중 가장 쉬운 방법은 MouseMove를 이용해서 직접 움직이게 해보는 방법입니다.

아래 코드를 이용하면 우측위, 우측아래, 좌측아래 , 위쪽 으로 각각 1초씩 이동하게 됩니다. 모니터 크기가 아니더라도 특정 제품의 크기를 구하시게 되면 종종 이런 방식으로 올바르게 구하고 있는지 위치 추적이 가능합니다.

	MouseMove(@DesktopWidth - 100  , 100)
	sleep(1000)
	MouseMove(@DesktopWidth - 100  , @DesktopHeight - 100)
	sleep(1000)
	MouseMove(100  , @DesktopHeight - 100)
	sleep(1000)
	MouseMove(100 , 100)

 

듀얼 모니터인 경우 다른 방식으로 2개가 합쳐진 모니터의 크기를 구할 수 있습니다.

#include <WinAPISys.au3>
$DesktopWidth = _WinAPI_GetSystemMetrics(78)
$DesktopHeight = _WinAPI_GetSystemMetrics(79)
MsgBox("", $DesktopWidth , $DesktopHeight)

또 다른 방법으로는 "Program Manager" 의 크기를 구하는 방식으로 듀얼 모니터의 크기를 구할 수 있습니다.

#include <MsgBoxConstants.au3>

Example()

Func Example()
    Local $aPos = WinGetPos("Program Manage")
    MsgBox($MB_SYSTEMMODAL, "", "X-Pos: " & $aPos[0] & @CRLF & _
            "Y-Pos: " & $aPos[1] & @CRLF & _
            "Width: " & $aPos[2] & @CRLF & _
            "Height: " & $aPos[3])
EndFunc   ;==>Example

 

도서 추천

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

 

프로그램에서 로딩 프로그레스 바로 상태를 표시 해준다면 보다 직관적인 프로그램 구성이 가능해집니다. 

10만개의 문서를 자동화 한다고 할때 21231/100000 식으로 표시하면 직관성이 떨어지고 만약 100 만개 이상이 된다면 한눈에 현재 상태를 알기 어렵게 됩니다. 

 

그래서 자동화 구성작업을 할때는 프로그레스 바를 통해 보다 직관적으로 만들어 주시면 좋습니다. 하단은 샘플로 작업 된 것이며 크기나 위치등은 개발자에 따라 변경 가능하므로 상황에 맞게 변형해서 사용해 주면 좋습니다. 

 

 

먼저 개발에 필요한 재로는 도움말의 예제를 가져 옵니다. 이번에는 ProgressSet 로 검색하여 Example 를 가져온 내용은 아래와 같습니다.

#include <AutoItConstants.au3>

Example()

Func Example()
    ; Display a progress bar window.
    ProgressOn("Progress Meter", "Increments every second", "0%", -1, -1, BitOR($DLG_NOTONTOP, $DLG_MOVEABLE))

    ; Update the progress value of the progress bar window every second.
    For $i = 10 To 100 Step 10
        Sleep(1000)
        ProgressSet($i, $i & "%")
    Next

    ; Set the "subtext" and "maintext" of the progress bar window.
    ProgressSet(100, "Done", "Complete")
    Sleep(5000)

    ; Close the progress window.
    ProgressOff()
EndFunc   ;==>Example

 

동작 화면은 다음과 같습니다.

스크립트 구성에 대하여 간단히 이야기 하자면 프로그레스 바를 간단하게 생성해주는 함수 입니다.  자세한 파라미터 설명은 하단에 추가 하였습니다.

    ProgressOn("Progress Meter", "Increments every second", "0%", -1, -1, BitOR($DLG_NOTONTOP, $DLG_MOVEABLE))

 

실제 프로그레스 바 동작을 진행하는 항목입니다. for 반복문을 사용하여 1초 단위로 10씩 올라가도록 설정 되어 있습니다. 

    For $i = 10 To 100 Step 10
        Sleep(1000)
        ProgressSet($i, $i & "%")
    Next

 

 

마지막으로 종료( 해당 프로그레스바가 사라지도록 ) 해주는 함수로 구성되어 있습니다.

    ProgressOff()

먼저 마우스를 활용하여 클릭하는 법은 하단 링크를 참조 해주세요.

 

smart-west.tistory.com/25

 

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

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

smart-west.tistory.com

 

내가 원하는 위치를 마음대로 클릭 할 수 있는 방법을 위해서는 내가 어디를 클릭할지를 알고 있는지 여부가 중요 합니다. 내가 클릭하고자하는 범위를 보다 정확히 알 수 있다면 좀더 쉽게 범위를 좁히고 그것은 자동화 성공률을 올려주게 됩니다.

 

마우스 위치를 구하는 함수는 MouseGetPos 함수를 활용 할 예정입니다. 편집기의 도움말에서 해당 함수를 찾아 예제를 가져 옵니다.

#include <MsgBoxConstants.au3>

Local $aPos = MouseGetPos()
MsgBox($MB_SYSTEMMODAL, "Mouse x, y:", $aPos[0] & ", " & $aPos[1])

 

해당 함수를 실행하면 마우스의 위치가 직관적인 대화상자로 표시 됩니다.

 

 

첫번째 값은 왼쪽 , 두번째 값은 위 기준 값입니다. 

하지만 대화상자로 나타나게 되면 2개 이상을 측정하려면 매우 번거롭기 때문에 툴팁으로 표시 되도록 변경 할 예정입니다.

먼저 while 문을 활용하여 지속적으로 실행 되도록 설정해줍니다. 그리고 이것을 종료 하기 위한 코드를 추가 합니다. 저는 ESC을 누르면 종료되도록 핫키를 추가 할 예정입니다. 핫키 지정관련해서는 아래 링크를 참조 하세요.

smart-west.tistory.com/21

 

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

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

smart-west.tistory.com

 

HotKeySet("{ESC}", "_HotKeyPressed")
Func _HotKeyPressed()
	Exit
EndFunc

 

핫키가 추가 되었으니 이제 While 안에 마우스 좌표가 툴팁으로 표시 되도록 할 예정입니다. 시작적으로 점더 잘 보이게 하기 위해 마우스를 따라다니도록 설정하는 방법도 추가 해봅니다. 이것은 단지.. 복사 한번 더 해주시면 됩니다. 

 

먼저 마우스위치가 0,0 위치에 툴팁으로 표시 되는 코드는 다음과 같습니다.

	ToolTip("Mouse x, y:"& $aPos[0] & ", " & $aPos[1], 0, 0)

 

이제 툴팁이 마우스를 따라다니게 하는 코드는 다음과 같습니다.

	ToolTip("Mouse x, y: "& $aPos[0] & ", " & $aPos[1],  $aPos[0] , $aPos[1] )

 

여기서 저는 아무스 위치와 정확히 겹치는 툴팁 보다는 조금 우측 아래로 이동한 툴팁이 좀더 좋을 것 같다는 생각이 들기 시작 했습니다. 그래서 위치 값을 조금 더 추가 해주도록 하겠습니다. 

	ToolTip("Mouse x, y: "& $aPos[0] & ", " & $aPos[1],  $aPos[0] + 15 , $aPos[1] + 15 )


0.2초 간격으로 리프레쉬 하며 마우스를 추적해서 따라오는 툴팁 툴이 완성되었습니다.

동작 화면은 다음과 같습니다.

 

 

#include <MsgBoxConstants.au3>
HotKeySet("{ESC}", "_HotKeyPressed")
Local $aPos = MouseGetPos()
While 1
	$aPos = MouseGetPos()
	ToolTip("Mouse x, y: "& $aPos[0] & ", " & $aPos[1],  $aPos[0] + 15 , $aPos[1] + 15 )
	Sleep(200)
WEnd
Func _HotKeyPressed()
	Exit
EndFunc

11 줄로 완료된 나만의 툴 입니다. 

빌드 된 실행 파일이 바로 필요하신 분은 아래 링크에서 이용 해주시면 됩니다.

 

smart-west.tistory.com/49

 

마우스 추적 모듈 만들기 - 툴팁으로 위치 표시 모듈

제작 방식은 아래 링크를 참조해주세요. smart-west.tistory.com/48 톨 동작 화면 결과 실행 파일 : - 주의사항 : 아래 EXE 파일은 위 소스를 EXE로 변경하여 빠른 실행을 도와 주는 파일입니다. 인터넷에�

smart-west.tistory.com

 

도서 추천

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

 

다른 외부 프로그램을 실행하는 방법알아보려 합니다. 가장 기본적인 명령어는 Run과 RunWait 을 이용하여 실행하는 방법입니다.

 

먼저 Run 사용 예제 입니다. 

Example()

Func Example()
    ; Run Notepad with the window maximized.
    Local $iPID = Run("notepad.exe", "", @SW_SHOWMAXIMIZED)

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

    ; Wait for 2 seconds.
    Sleep(2000)

    ; Close the Notepad process using the PID returned by Run.
    ProcessClose($iPID)
EndFunc   ;==>Example

 

Runwait 사용 예제 입니다.

#include <MsgBoxConstants.au3>

Example()

Func Example()
    ; Run Notepad and wait for the Notepad process to close.
    Local $iReturn = RunWait("notepad.exe")

    ; Display the return code of the Notepad process.
    MsgBox($MB_SYSTEMMODAL, "", "The return code from Notepad was: " & $iReturn)
EndFunc   ;==>Example

 

두 가지 방식의 가장 큰 차이는 Run의 경우 실행 후 다음 코드로 넘어가지만 RunWait의 경우 실행 될때 까지 대기하는 차이가 있습니다.

RunWait의 경우 실행을 알아서 기대려 주는 장점이 있지만, 만약 해당 프로그램이 실행되지 않는 경우 무한 대기에 빠질 수 있으므로 상황에 맞게 사용해야 합니다.

 

두 값 모두 두번째 값은 프로그램 실행 경로 입니다.

 

그 다음 ShellExecute 와 ShellExecuteWait 입니다. Run / RunWait 와 유사한 사용방식을 제공합니다.

#include <MsgBoxConstants.au3>

Example()

Func Example()
    ; Retrieve the following text file. This can be found in the include folder which is in the installation path of AutoIt.
    Local $sWow64 = ""
    If @AutoItX64 Then $sWow64 = "\Wow6432Node"
    Local $sFile = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE" & $sWow64 & "\AutoIt v3\AutoIt", "InstallDir") & "\include\_ReadMe_.txt"

    ; Execute the readme file (.txt) with the default editor used for text files in Windows.
    Local $iPID = ShellExecute($sFile)

    MsgBox($MB_SYSTEMMODAL, "", "PID: " & $iPID)
EndFunc   ;==>Example
#include <MsgBoxConstants.au3>

Example()

Func Example()
    ; Execute Notepad and wait for the Notepad process to close.
    Local $iReturn = ShellExecuteWait("notepad.exe")

    ; Display the return code of the Notepad process.
    MsgBox($MB_SYSTEMMODAL, "", "The return code from Notepad was: " & $iReturn)
EndFunc   ;==>Example

 

ShellExecute 항목의 장점은 사이트도 바로 실행이 가능하다는 점입니다. 하단 처럼 웹 주소를 주면 메인으로 사용하는 브라우저에서 바로 실행 됩니다.

local $Main_Site ="https://smart-west.tistory.com"
ShellExecute($Main_Site)

 

 

파일 비교용 장치 입니다. 하단에 첨부 된 압축을 해제 후 실행하면 아래와 같은 화면이 나타납니다.

 

각 번호별 기능은 다음과 같습니다.

1. 비교를 위한 첫번째 선택 폴더 입니다. - 버튼 선택 시 원하는 폴더를 선택하면 됩니다.

2. 비교를 위한 두번째 선택 폴더 입니다. - 버튼 선택 시 원하는 폴더를 선택하면 됩니다.

3. 2개의 폴더 선택 후 파일 비교를 진행 합니다.

4. 비교 결과를 엑셀에 생성해줍니다. ( 엑셀 정품이 설치되어 있어야 합니다. )

5. Exit 프로그램을 종료 합니다.

 

3번 Compare 선택 하면 비교 결과가 화면에 나타납니다.

비교로 나타난 화면에는 파일 이름, 파일 용량과 시간이 표시 됩니다.

1번 버튼을 선택하면 클립보드에 해당 데이터가 들어갑니다.

2번 버튼을 선택하면 비교 화면이 종료 됩니다.

 

 

 

 

 

동작 화면은 다음과 같습니다.

 

 

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

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

Build_File_Checker.zip
0.82MB

.

반복문 중 Do... Until  입니다.

 

0 에서 9 까지 10번 반복 되는 코드 입니다.

#include <MsgBoxConstants.au3>

Local $i = 0
Do
    MsgBox($MB_SYSTEMMODAL, "", "The value of $i is: " & $i) ; Display the value of $i.
    $i = $i + 1 ; Or $i += 1 can be used as well.
Until $i = 10 ; Increase the value of $i until it equals the value of 10.

 

여기서 종료가 아닌 반복문만 나가는 법을 추가해 보려 합니다. 조건문은 5보다 $i 가 커지면 반복문이 종료되게 만들기 위해 다음과 같이 추가 합니다. 

#include <MsgBoxConstants.au3>

Local $i = 0
Do
    MsgBox($MB_SYSTEMMODAL, "", "The value of $i is: " & $i) ; Display the value of $i.
    $i = $i + 1 ; Or $i += 1 can be used as well.
    If 5 < $i then Exit    
Until $i = 10 ; Increase the value of $i until it equals the value of 10.
MsgBox($MB_SYSTEMMODAL, "", "Exit ")

메세지 박스가 5까지 올라간 후 추가 메세지 박스 없이 종료 됩니다. exit는 프로그램 자체가 종료 되므로 그 밖에 있는 추가적인 메세지 박스 표시 동작이 진행되지 못합니다.

 

이번에는 ExitLoop로 변경해 보려 합니다.

Local $i = 0
Do
    MsgBox($MB_SYSTEMMODAL, "", "The value of $i is: " & $i) ; Display the value of $i.
    $i = $i + 1 ; Or $i += 1 can be used as well.
    If 5 < $i then ExitLoop
Until $i = 10 ; Increase the value of $i until it equals the value of 10.
MsgBox($MB_SYSTEMMODAL, "", "ExitLoop")

 

1에서 5까지 진행되고 반복문 밖에 있는 메세지 박스가 표시되는 것을 확인 할 수 있습니다.

 

어느 한 개발자에게 가장 많이 사용하는것 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

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

 

 

날짜 계산 도구 만드는 과정은 하단 내용을 참고하세요 

[ Autoit ] 날짜 계산기 - 몇 일 후 날짜계산해주는 도구 만들기

 

몇일 후를 계산해 주는 소스와 툴 입니다. 메세지 박스 타이틀에 오늘날짜가 표시되도록 업데이트 한 버전입니다.

 

 

결과 소스 파일 :

 

 

Next_Data.au3
0.00MB

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

 

Next_Data.exe
0.94MB

화면 잠금 방지 도구 만드는 과정은 하단 내용을 참고하세요 

 

[ Autoit ] 회사 화면 잠금 방지 도구 만들기 

 

[ Autoit ] 회사 화면 잠금 방지 도구 만들기

회사에서 컴퓨터를 하다보면 보안을 목적으로 5분 ~ 10분 후 화면 잠금이 나타나는 경우가 많이 있습니다. 보안을 목적으로 설정 된 경우 개인 PC에서는 설정을 바꿀 수 없는 경우가 있는데요. 그�

smart-west.tistory.com

 

 

결과 소스 파일 :

 

화면잠금방어툴.au3
0.00MB

 

 

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

 

 

화면잠금방지툴.zip
0.55MB

 

 

모두를 위한 RPA 유아이패스 UiPath 입문 + 활용

전 세계 1위 RPA 플랫폼인 UiPath(유아이패스)의 기본부터 실무 적용까지 다른 입문 실전 활용서로 최신 기능을 담아 개정 2판으로 새로 나왔다. 『모두를 위한 RPA 유아이패스 UiPath 입문+활용』의 ��

www.yes24.com

 

 

RPA의 모든 것

급변하는 IT 환경과 4차 산업 시대를 맞이하면서 인공지능을 이용한 업무 자동화는 거스를 수 없는 대세로 자리 잡고 있다. 이와 함께 세계적으로 재택근무와 언택트 환경이 요구되면서 더욱더 �

www.yes24.com

 

글자 형식을 변경하는 방법에 대하여 알아보겠습니다. Autoit 편집기의 도움말에서 BinaryToString 의 Example 를 가져오면 다음과 같은 내용을 확인 할 수 있습니다.

해당 Script를 실행하면 4번의 대화상자가 나타나며 일부 글자는 깨져서 표시 되는 것을 확인 할 수 있습니다.

#include <MsgBoxConstants.au3>
#include <StringConstants.au3>

Example()

Func Example()
    ; Define the string that will be converted later.
    ; NOTE: This string may show up as ?? in the help file and even in some editors.
    ; This example is saved as UTF-8 with BOM.  It should display correctly in editors
    ; which support changing code pages based on BOMs.
    Local Const $sString = "Hello - 你好"

    ; Temporary variables used to store conversion results.  $dBinary will hold
    ; the original string in binary form and $sConverted will hold the result
    ; afte it's been transformed back to the original format.
    Local $dBinary = Binary(""), $sConverted = ""

    ; Convert the original UTF-8 string to an ANSI compatible binary string.
    $dBinary = StringToBinary($sString)

    ; Convert the ANSI compatible binary string back into a string.
    $sConverted = BinaryToString($dBinary)

    ; Display the resulsts.  Note that the last two characters will appear
    ; as ?? since they cannot be represented in ANSI.
    DisplayResults($sString, $dBinary, $sConverted, "ANSI")

    ; Convert the original UTF-8 string to an UTF16-LE binary string.
    $dBinary = StringToBinary($sString, $SB_UTF16LE)

    ; Convert the UTF16-LE binary string back into a string.
    $sConverted = BinaryToString($dBinary, $SB_UTF16LE)

    ; Display the resulsts.
    DisplayResults($sString, $dBinary, $sConverted, "UTF16-LE")

    ; Convert the original UTF-8 string to an UTF16-BE binary string.
    $dBinary = StringToBinary($sString, $SB_UTF16BE)

    ; Convert the UTF16-BE binary string back into a string.
    $sConverted = BinaryToString($dBinary, $SB_UTF16BE)

    ; Display the resulsts.
    DisplayResults($sString, $dBinary, $sConverted, "UTF16-BE")

    ; Convert the original UTF-8 string to an UTF-8 binary string.
    $dBinary = StringToBinary($sString, $SB_UTF8)

    ; Convert the UTF8 binary string back into a string.
    $sConverted = BinaryToString($dBinary, $SB_UTF8)

    ; Display the resulsts.
    DisplayResults($sString, $dBinary, $sConverted, "UTF8")
EndFunc   ;==>Example

; Helper function which formats the message for display.  It takes the following parameters:
; $sOriginal - The original string before conversions.
; $dBinary - The original string after it has been converted to binary.
; $sConverted- The string after it has been converted to binary and then back to a string.
; $sConversionType - A human friendly name for the encoding type used for the conversion.
Func DisplayResults($sOriginal, $dBinary, $sConverted, $sConversionType)
    MsgBox($MB_SYSTEMMODAL, "", "Original:" & @CRLF & $sOriginal & @CRLF & @CRLF & "Binary:" & @CRLF & $dBinary & @CRLF & @CRLF & $sConversionType & ":" & @CRLF & $sConverted)
EndFunc   ;==>DisplayResults

 

내용에 주석이 많기 때문에 주석을 잘 참고 하신다면 별도의 설명이 없이도 사용이 가능합니다.  그러므로 여기서는 해당 내용의 사용 방법에 대하여 짧게 설명드리고자 합니다.

 

첫번째 대화상자가 표시되는데 필요한 Script는 다음 5줄 입니다. 

Local Const $sString = "Hello - 你好"
Local $dBinary = Binary(""), $sConverted = ""
$dBinary = StringToBinary($sString)
$sConverted = BinaryToString($dBinary)
DisplayResults($sString, $dBinary, $sConverted, "ANSI")

먼저 첫번째 입력 값은 StringToBinary를 통해 변환되는데 한번 사용 되며, 그 후 DisplayResults에 결과 확인용으로 사용 됩니다. ( 하단 이미지 참고 )

 

두번째 값은 Binary로 선언된 변수에 StringToBinary 로 첫번째 글자를 변환한 값 입니다. 대화상자에서 중간에 영어와 숫자로 나타나는 값입니다. 

 

 

마지막 값은 Binary값을 다시 String로 고쳐서 확인하는 값입니다. 첫번째 대화상자에서는 일부 한자가 손상되어 표시되는 것을 확인 할 수 있습니다.

 

Binary로 변환하는 작업은 RPA에서 다국어를 변활할때 유용한 기능입니다. 영문 OS등 다양한 OS 환경에서는 특정 언어가 정상적으로 표시되지 않는 경우가 있습니다. 예를들어 영문 OS 에서 한글을 INI 파일에 기록하면 글자가 손상되어 기록 됩니다. 이러한 경우를 막기위해 Binary로 변환하여 기록하고 다시 변환하여 사용 한다면 RPA 작업 시 보다 안정적으로 사용이 가능해 집니다.

+ Recent posts