반응형

 

 

서론

비활성 키 매크를 여러분들과 같이 만들어볼까 합니다. 활성화 매크로를 처음부터 접하고,

그 다음으로 비활성화 매크로를 만드려고 했으나, 바로 접하게 되면 어느정도 이해하고 

만들 수 있을 것이라고 생각이 듭니다. 

 

비활성 매크로 제작기는 바로 아래 목차에 어떤 내용을 다룰 것인지 나와 있으니, 참조바라며,

앞서 말씀드렸던 "비활성" 과 반대되는 "활성" 을 간단하게나마 이해하고 따라오시면

조금더 쉽게 이해하고 따라오실 수 있을 것 입니다.

 

비활성화 매크로

 

비활성화 매크로는, 키보드 및 마우스 이미지 조작등의 권한 ( 제어권 )을 직접 컴퓨터를 통해 전달 하는 것이 아닌 소프트웨어에 직접적인 명령을 전달함에 있어, 매크로를 사용하는 중에 다른 작업이 용이합니다.

 

활성화 매크로

 

활성화 매크로는, 비활성화 매크로의 반대로, 키보드 및 마우스 등의 권한을 컴퓨터에 직접적으로 전달 하여 조작합니다. 이에, 다른 작업이 불가합니다.

 

 

 

 

목차

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

 

목차가 쫌 많습니다...

지금 적으면서 머리 속에 그려지는 파트별로 나열하였지만, 줄어들 수 도 있고, 많아질 수 도있습니다. 

 

 

 

준비사항

오토핫키 다운로드 ( v1 : 해당 게시판은 v1버전 전용입니다 )

https://www.autohotkey.com/

 

AutoHotkey

AutoHotkey provides a simple, flexible syntax allowing you to focus more on the task at hand rather than every single little technicality. It supports not only the popular imperative-procedural paradigm, but also object-oriented and command-based programmi

www.autohotkey.com

 

Download - > Dwonload v1.1 ( 1버전 다운로드해주세요.. 나중에 버전 글자가 달라질 수 있으니 .. )

 

스마트 구이 ( smartGui ) 

https://peuming.tistory.com/4

 

오토핫키 강좌 - Smart Gui (스마트 구이) 다운로드

오토핫키 GUI 디자인 및 사용자편의를 위한 디스플레이 제작은 SmartGui를 사용하시면 됩니다. Duplicate Control : 컨트롤 복사 Move Control : 컨트롤 이동 Set Position : 컨트롤 위치,크기값 변경 Delete Control :

peuming.tistory.com

 

 

오토핫키 스크립트 편집기(SciTE4AutoHotkey) -

한글패치 필요없습니다.. 그냥 setting들어가면 이제는 한글지원하더라구요

https://peuming.tistory.com/3

 

오토핫키 강좌 - 오토핫키 스크립트 편집기(SciTE4AutoHotkey) 및 한글패치

오토핫키 스크립트 편집기(SciTE4AutoHotkey) 프로그래밍을 할려면 편집기가 필요하겠죠? 메모장으로 적어서 하나하나 적을 수는없으니깐요, 그래서 이번에 권유드리는 편집기는 오토핫키 SciTE4AutoHo

peuming.tistory.com

 

 

마치며

오랜만에, 새로운 블로그에서 강좌를 쓰려고하니 조금 떨리기도하고, 이 블로그 글을 읽고 있는 사람들에게

잘 설명할 수 있을지 모르겠지만, 잘 부탁드려요!

 

참고로, 해당 비활성화 매크로 제작기의 모든 소스는 마음대로 사용하셔두됩니다.

또한, 제가 설명하는 부분의 코드들이 디테일하지 못하고 조금더 편하고 간결한 소스가 있으면 언제든지

댓글로 피드백 부탁드립니다, 

 

감사합니다!

반응형
반응형

 

 

메타 페이스북 광고 라이브러리에서 제공하는 다양한 광고 영상을 손쉽게 다운로드하고

활용할 수 있는 프로그램을 소개합니다.

 

이 프로그램은 광고 캠페인 분석, 경쟁사 연구, 마케팅 전략 수립 등에 유용하게 사용될 수 있습니다.

광고 영상을 빠르고 효율적으로 다운로드하고, 필요한 형식으로 저장하여 작업의 효율성을 높여보세요.

 

 

 

 

저장 기능 저장위치를 지정하여 지역/키워드별로 폴더를 만들어 영상을 수집
딜레이 0초도 가능하며, 트래픽 과부화 방지를 위한 딜레이
지역선택 및 지역검색 광고 라이브러리에 수납된 지역들을 선택할 수있음
다운로드 개수 999개 설정시 999개 까지만 저장, 만약 라이브러리에 100개만 있을경우 100개 전체 저장

 

 

 

 

https://open.kakao.com/o/sFmocaHg

 

언어공작소2

#더망고 프로그램#더망고자동화프로그램 . -> 자동화 프로그램의 모든것

open.kakao.com

 

 

반응형
반응형

 

 

광학 문자 인식(OCR)

광학 문자 인식(OCR)은 이미지로 된 텍스트를 컴퓨터가 이해할 수 있는 텍스트로 변환하는 기술입니다.

 

위 이미지를 보면 미리보기 / 맞춤법 / 글감검색 / open source / DOWNLOAD POWERED BY TINY

와 같은 글자가 들어있는 이미지 파일이 있습니다. 

 

이미지파일에서 텍스트를 수정하거나 삭제하거나 편집하는 것은 불가능하지만

광학문자인식을 통해 이미지안에 들어있는 텍스트를 추출하여 데이터를 얻을 수 있는 기술입니다.

 

 

광학 문자 인식(OCR) 오토핫키 사용법

 

원작자 커뮤니티 주소입니다.

https://www.autohotkey.com/boards/viewtopic.php?f=83&t=116406

 

Easy OCR - AutoHotkey Community

@ Quote 12 Jul 2023, 11:55 @Krd, x1 and y1 should be the coordinates to top left corner of the search area, and x2 and y2 coordinates for bottom right corner. This means that for example {x1:0,y1:0,x2:200,y2:200} would only look in the top left corner of t

www.autohotkey.com

 

 

 

 

ahk_v2_uwp_ocr.zip
0.06MB

 

 

예제 1
데스크톱에서 찾은 모든 텍스트를 표시한 다음 결과를 줄별로 강조 표시합니다.

#include OCR.ahk

result := OCR.FromDesktop()
MsgBox "All text from desktop: `n" result.Text

MsgBox "Press OK to highlight all found lines for 3 seconds."
for line in result.Lines
    result.Highlight(line, -3000)
ExitApp

 

 

예제 2
메모장에서 일부 텍스트를 찾아 마우스로 클릭&드래그하여 선택합니다.

#include OCR.ahk

Run "notepad.exe"
WinWaitActive "ahk_exe notepad.exe"
Send "Lorem ipsum "
Sleep 40

result := OCR.FromWindow("A",,2)
try found := result.FindString("Lorem")
if !IsSet(found) {
    MsgBox '"Lorem" was not found in Notepad!'
    ExitApp
}

result.Highlight(found)

CoordMode "Mouse", "Window"
MouseClickDrag("Left", found.x, found.y, found.x + found.w, found.y + found.h)

 

 

예제 3
커서 아래에 있는 텍스트를 읽어 실시간으로 표시합니다.

#Requires AutoHotkey v2
#include OCR.ahk

CoordMode "Mouse", "Screen"
CoordMode "ToolTip", "Screen"

DllCall("SetThreadDpiAwarenessContext", "ptr", -3) ; Needed for multi-monitor setups with differing DPIs

global w := 150, h := 50, minsize := 5, step := 3
Loop {
    MouseGetPos(&x, &y)
    Highlight(x-w//2, y-h//2, w, h)
    ToolTip(OCR.FromRect(x-w//2, y-h//2, w, h, "en-us").Text, , y+h//2+10)
}

Right::global w+=step
Left::global w-=(w < minsize ? 0 : step)
Up::global h+=step
Down::global h-=(h < minsize ? 0 : step)

Highlight(x?, y?, w?, h?, showTime:=0, color:="Red", d:=2) {
	static guis := []

	if !IsSet(x) {
        for _, r in guis
            r.Destroy()
        guis := []
		return
    }
    if !guis.Length {
        Loop 4
            guis.Push(Gui("+AlwaysOnTop -Caption +ToolWindow -DPIScale +E0x08000000"))
    }
	Loop 4 {
		i:=A_Index
		, x1:=(i=2 ? x+w : x-d)
		, y1:=(i=3 ? y+h : y-d)
		, w1:=(i=1 or i=3 ? w+2*d : d)
		, h1:=(i=2 or i=4 ? h+2*d : d)
		guis[i].BackColor := color
		guis[i].Show("NA x" . x1 . " y" . y1 . " w" . w1 . " h" . h1)
	}
	if showTime > 0 {
		Sleep(showTime)
		Highlight()
	} else if showTime < 0
		SetTimer(Highlight, -Abs(showTime))
}

 

 

예제 4
활성 창에서 검색어를 찾으려고 시도합니다.

#Requires AutoHotkey v2
#include OCR.ahk

CoordMode "Mouse", "Window"
Loop {
    ib := InputBox("Insert search phrase to find from active window: ", "OCR")
    Sleep 100 ; Small delay to wait for the InputBox to close
    if ib.Result != "OK"
        ExitApp
    result := OCR.FromWindow("A",,2)
    try found := result.FindString(ib.Value)
    catch {
        MsgBox 'Phrase "' ib.Value '" not found!'
        continue
    }
    MouseMove found.x, found.y
    result.Highlight(found)
    break
}

 

 

예제 5
텍스트를 기다리는 방법, 결과 개체에서 키워드를 검색하는 방법, 결과를 클릭하는 방법을 보여줍니다

#Requires AutoHotkey v2
#include OCR.ahk

Run "https://www.w3schools.com/tags/att_input_type_checkbox.asp"
WinWaitActive "HTML input type",,10
if !WinActive("HTML input type") {
    MsgBox "Failed to find test window!"
    ExitApp
}

 

예제 6

검색 영역의 창을 특정 좌표로 제한하는 방법 

result := CropResult(OCR.FromDesktop(), 0, 0, 500, 80)
for line in result.Lines
    ToolTip(line.Text), result.Highlight(line)

CropResult(result, x, y, w, h) {
    result := result.Clone()
    croppedLines := [], croppedWords := [], text := ""
    for line in result.Lines {
        croppedWords := [], lineText := ""
        for word in line.Words {
            if word.x >= x && word.y >= y && (word.x+word.w) <= (x+w) && (word.y+word.h) <= (y+h)
                croppedWords.Push(word), lineText .= word.Text " ", ObjAddRef(word.ptr)
        }
        if croppedWords.Length {
            line := {Text:Trim(lineText), Words:croppedWords}
            line.base.__Class := "OCR.OCRLine"
            croppedLines.Push(line)
            text .= lineText
        }
    }
    result.DefineProp("Lines", {Value:croppedLines})
    result.DefineProp("Text", {Value:Trim(text)})
    result.DefineProp("Words", OCR.Prototype.GetOwnPropDesc("Words"))
    return result
}

 

 

 

 

반응형
반응형

 

 

Click 

마우스 버튼을 누르고 있을 수 있고, 지정된 좌표에 마우스 버튼을 클릭할 수 있습니다.

또한, 마우스 이동도 가능합니다.

 

 

Mouseclick 보다 Click 를 사용을 많이합니다.

대체적인 이유는, 시스템의 제어판을 통해 사용자가 마우스 및 입력 값을 변경해도 오토핫키에서는
자동으로 인식후 처리하기 때문입니다. 

 

 

기본 매개변수 및 구본 구조

Click  다음 파라미터 생략시, 현재 커서가 있는 위치에서 클릭을 합니다.
Click,44,55 스크린상 44,55 좌표에 왼쪽 클릭을 합니다 ( CoordMode 적용시 제외 )
Click,Right,44,55 스크린상 44,55 좌표에 오른족 클릭을 합니다 ( CoordMode 적용시 제외 )
Click,2 왼쪽 버튼을 두번 클릭합니다
Click down 왼쪽 버튼을 그대로 누르고 있습니다.
Click up 왼쪽 버튼을 땝니다.
Click,%x%,%y% Click 표현식이 지원대지 않으며, %로 감싸주어야 합니다.
Click WheelUp 휠을 위로 돌립니다 / WL 표현 가능합니다
Click WheelDown 휠을 아래로 돌립니다 / WD 표현 가능합니다
Click WheelUp,2 휠을 위로 2번 돌립니다

 

 

변수를 이용한 Click 사용

Screen_x = 55
Screen_y = 77

click,%Screen_x%,%Screen_y%

 

마우스 휠 사용

Loop 10
{
    Click WheelUp
    sleep,15
}

 

< 위 구문은, 오토핫키 헬프파일에도 명시되어 있습니다, 특정 게임 및 응용 프로그램에서 Click의 Count개념에 대해 인지하지 못하거나 선호하지 않는 경우가 많아, Loop 를 사용하여 딜레이를 주거나, 위와 같은 예시로 사용하시면 됩니다 > 

 

키보드랑 사용할때

Send +{Click 100, 200}  ; Shift+LeftClick
Send ^{Click 100, 200, right}  ; Control+RightClick

 

<쉬프트 버튼과 100,200 좌표에 왼쪽 클릭>

<컨트롤 버튼과 100,200 좌표에 오른쪽 클릭>

반응형

+ Recent posts