PSP
 

Sample 1-3 of 5 : 화면에 4개의 창을 2열 2행 정렬로 배치

최고관리자 2026-06-24 (수) 20:59 2개월전 14  
01. SysGet, 화면, MonitorWorkArea ;SysGet 두 번째 인자를 Monitor로 하면 화면 전체 좌표를 구한다

실행할프로그램 = notepad.exe

Loop 4
{
Run, % 실행할프로그램, , , 활성창PID
WinWaitActive, ahk_pid %활성창PID%
WinGet, 활성창HWAN, ID, ahk_pid %활성창PID%
수집된창HWAN .= 활성창HWAN " "
}

Loop, Parse, 수집된창HWAN, %A_Space%
{
If A_Index = 1
활성창HWAN1 = % A_LoopField
If A_Index = 2
활성창HWAN2 = % A_LoopField
If A_Index = 3
활성창HWAN3 = % A_LoopField
If A_Index = 4
활성창HWAN4 = % A_LoopField
}

WinMove, ahk_id %활성창HWAN1%, , % 화면Left, % 화면Top, % 화면Right / 2, % 화면Bottom / 2
WinMove, ahk_id %활성창HWAN2%, , % 화면Right / 2, % 화면Top, % 화면Right / 2, % 화면Bottom / 2
WinMove, ahk_id %활성창HWAN3%, , % 화면Left, % 화면Bottom / 2, % 화면Right / 2, % 화면Bottom / 2
WinMove, ahk_id %활성창HWAN4%, , % 화면Right / 2, % 화면Bottom / 2, % 화면Right / 2, % 화면Bottom / 2
sleep 800
명령어 = taskkill /f /im %실행할프로그램% /t
Run % 명령어, , hide

최고관리자 2026-06-24 (수) 21:00 2개월전
01.
응용 프로그램을 실행하여 창을 생성하는 과정이다.

02.
응용 프로그램이 실행되면 Process가 생성되고 이는 작업관리자에서 확인할 수 있다. 이후 AutoHotKey에서 제어하려면 HWAN을 획득해야되는데 이를 획득하는 과정은 참고록 02번 3행의 [ WinExit ]를 대신해 [ WinGet, 활성창HWAN, ID, AHK_PID %활성창PID% ]로 대체 가능하다.

03.
02번 2행의 [ 활성창HWAN ] 변수에 담긴 HWAN으로 실행된 창을 최대화 한다.


04.
01번 2행의 [ 활성창PID ] 변수와 02번 2행의 [ 활성창HWAN ] 변수에 담긴 값을 확인한다.


05.
Process에 등록된 [ notepad.exe ]를 아애 닫아버려 강제종료하는 구절이다. 실행 중인 응용 프로그램이 단일인 경우 [ Process, Close, % 실행할프로그램 ]만으로 이 구절을 대체할 수 있다. 그러나 동일 Process의 응용 프로그램이 여러개 실행 중이라면 정확하게 지정해주지 않는 이상 어떤 창이 꺼질지 알 수가 없다.



07.
Process에 등록되었던 [ notepad.exe ]가 모두 종료되었는지 확인하는 구절이다. 01번 1행의 [ notepad.exe ]가 Process에 존재하지 않으면 07번 1행에서 [ 0 ]을 반환한다.
주소
최고관리자 2026-06-24 (수) 21:00 2개월전
VarSetCapacity를 쓰는 이유
오토핫키에서 하드웨어를 직접 제어하려면
DLL을 통해 접근해야되는데
오토핫키에서 얻은 값이 DLL의 자료형식과 맞지 않아
잘못된 처리 결과를 가져오기 때문에 VarSetCapacity를 통해
문자열변수의 메모리 값을 16진수로 변경하는 것

DLLCall에 사용되는 구조는 MSDN에서 정확한 크기를 파악해야 한다.
마우스영역 구조의 오프셋은

ClipCursor는 포인트 좌표가 아닌 윈도우상의 좌표다.
따라서

오토핫키를 사용하여 Win32 API를 호출

16개의 바이트로 개수를 지정한다.

문자열 구성해 클립커버의 수행성능을 유지한다. 즉 클립커버가 가용할 수 있는 크기
주소
hi
이전글  다음글  목록 글쓰기

 
 
ragoman@naver.com