반응형

네이버 블로그 최적화 자동 글쓰기 프로그램입니다. 

해당 프로그램은 글의 형태와 최적화된 글 타입만 지키고 글을 작성하는 것입니다.

 

크몽 프로젝트

< N사 자동 글쓰기 > 

 

   

 

키워드를 입력하면, 

키워드의 "스마트블록"의 주제부 단어, 연관검색어, 상위 블로그의 개 제목 및 원고 에서 내용과 제목이 결정됩니다.

 

제목은 키워드 + 상위 3개블로그의

제목을 단어별로 랜덤 조합하여 ( 2글자이상) 제목을 만들고, 

 

원고의 내용을 문장별로 썪어서 원고를 만들어서 적용시킵니다.

 

인용구

사진

원고

 

인용구

사진

원고 

 

 

 

형태로 작업됩니다.  

 

관련 프로그램 문의

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

 

언어공작소2

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

open.kakao.com

 

 

 

 

  

반응형
반응형

 

 

 

 

 

링크형식의 큐텐제펜의 데이터를 크롤링합니다

키워드형식보다, 카테고리형식까지 포함시키기위해 링크별로 작업되었습니다.

 

링크만 넣어주신다면,

해당 상품의 가격,총판매량, 리뷰수, 일자별 리뷰수를 취합할 수있습니다

( 리뷰 날짜는 중복 선택 가능합니다 )

 

 

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

 

언어공작소2

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

open.kakao.com

 

반응형
반응형

 

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

 

목차
  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부에서 뵙겠습니다

 

 

 

 

반응형
반응형

 

Send / SendRaw / Sendinput

활성창에 키 이벤트를 전송합니다

 

 

기본 사용법

Send

Send, 안녕하세요  ; "안녕하세요"를 입력
Send, {Enter}       ; Enter 키를 입력

 

Send는 기본적으로 키를 입력하는 데 사용됩니다. 특수 문자는 이스케이프 문자로 변환되어 입력됩니다.

예를 들어, Send를 사용하면 "안녕하세요`n반갑습니다" 는 "안녕하세요" 후에 엔터 키를 입력하고 "반갑습니다"가 이어집니다.

 

SendRaw

SendRaw, 안녕하세요`n반갑습니다

 

SendRaw는 텍스트를 "있는 그대로" 입력합니다. 특수 문자나 기호들이 변환되지 않고, 그대로 출력됩니다. 예를 들어, SendRaw는 "안녕하세요`n반갑습니다" 의 입력에서 `n [ enter ] 를 입력하지 않고 그대로 출력됩니다.

 

Sendinput

Send, 안녕하세요  ; "안녕하세요"를 빠르게 입력

 

SendInput은 키를 입력하는 매우 빠르고 효율적인 방법입니다. 

기본적으로 키 입력 속도가 매우 빠르며, 키 입력을 OS에 빠르게 전달합니다. SendInput은 Send보다 더 빠르게 입력됩니다. 특수 문자를 포함한 입력도 처리 가능합니다.

 

 

 

키 입력을 하려면?

 

{ } 안에 넣는 행위는 "특수 키"를 나타내는 방식입니다.

예를 들어 {a}는 문자 "a"를 보내는 것이 아니라, 실제로 키보드에서 'a' 키를 눌러서 입력하는 동작을 의미합니다. 즉, 물리적인 키 누름을 시뮬레이션합니다.

 

{ } 에 넣지 않는 행위는

이 명령어는 문자 "a"를 그대로 입력하는 방식입니다. 즉, 텍스트 "a"를 출력하는 것입니다.

 

입력 키  결과
{f1} - {f12} 키보드 상단 F1 키 부터 F12 키
{!}
{#} #
{+} +
{^} ^
{{} {
{}} }
{enter} 키보드 엔터 ( ENTER ) 키
{space} 키보드 스페이스 바 ( SPACE ) 키
{Escape} , {Esc} 키보드 Esc 키
{Tab} 키보드 왼쪽 tab 키
{Backspace} , {BS} 키보드 백스페이스 
{delete} , {del} 키보드 중단 Delete 키
{insert} , {Ins} 키보드 중단 Inster 키 
{up} , {down} , {Left} , {Right} 키보드 방향키
{home} 키보드 중단 Home 키
{end} 키보드 중단 End 키
{PgUp}, {PgDn} 키보드 중단 PgUp,PgDown
 
{CpasLock} 키보드 탭 아래 캡스락
{ScrollLock} 키보드 중상단 키
{NumLock} 키보드 키패드 NumLock 키
 
{Alt} ALT 키 기본, 통상 왼쪽이 디폴트로 전송됨
{LAlt} , {RAlt} 왼쪽 알트키 / 오른쪽 알트키
{Shift}  Shift 키 기본, 통상 왼쪽 디폴트로 전송됨
{LShift} , {RShift} 왼쪽 쉬프트키 / 오른쪽 쉬프트키
 
{Numpad0} - {Numpad9} 키보드 오른쪽 넘패드키 숫자 0 - 9
{NumpadDot} 키보드 오른쪽 넘패드 ( . ) 
{NumpadEnter} 키보드 오른쪽 넘패드 엔터키
{NumpadMult} 키보드 오른쪽 넘패드 곱셈키
{NumpadDiv} 키보드 오른쪽 넘패드 나눗셈키
{NumpadAdd} 키보드 오른쪽 넘패드 덧셈 키
{NumpadSub} 키보드 오른쪽 넘패드 뺼셈 키
{NumpadDel} 키보드 오른쪽 넘패드 삭제 키
{NumpadIns} 키보드 오른쪽 넘패드 삽입 키

 

 

이하, 더 있지만 이렇게 { } 안에 넣는 형식으로 사용합니다. 

 

해당 키입력은 키를 입력후 때는 형태의 완전한 이벤트라면,

만약 키입력을 4초 동안 눌르고 싶다면?

 

Send 명령어로 키를 쭉 입력하고싶다.

send,{Alt Down}
sleep,4000
send,{Alt Up}

 

Send 명령어로 여러번 누르고싶다

Send {A 20}   ; 대문자 A를 20번입력합니다

 

Loop,10 {
	send,{A}
}

 

Send 명령어 심볼 형식으로도 사용가능합니다

Send,^c ; 컨트롤 c
send,^v ; 컨트롤 v

 

심볼형태 입력 값 예시
^ Ctrl Down - Up Send,^{home} 
; 컨트롤 키와 홈키를 같이 눌릅니다
+ Shift Down - Up Send,+A
;쉬프트와 A 키를 같이 눌릅니다
! Alt Down - Up Send,!b
;알트키와 b키를 같이 눌릅니다
# Win Down - Up Send,#b
;윈도우키와 b키를 같이 눌릅니다.
반응형

+ Recent posts