W기술과 생활

닫기 검색결과 전체 보기

    [AHK] AutoHotKey 윈도우 실제 작업 영역 구하기 + coordmode 차이점

    Tip/AHKmacro 2014. 4. 7. 00:31

    안녕하세요.

    이번엔 오토핫키로 윈도우 작업 영역을 구하는 방법을 공유하고자 합니다.

    오토핫키를 사용하다보면 coordmode에서 전체화면 모드 Screen으로 선언하고 작업을 합니다.

    사실 일장일단이 있지만 전체화면 모드로 해야 헷갈리지 않고 좋더군요.


    아무튼 이 방법은 창이 전체화면이던지 아니던지 문제가 없다는 장점이 있습니다.

    또한 윈도우 테마(XP,Win7등)에 영향을 받지 않는다는 장점이 있죠.

    그래서 어떤 환경에서든지 같은 결과를 만들어낸다는 장점이 있습니다.


    인벤 피온3의 일락일협님이 제작하신 포메저장 프로그램도 오토핫키로 하는데,

    단점은 전체화면에서만 제대로 작동한다는 점이죠.

    이 방법을 사용한다면 전체화면이던 창모드이던 상관이 없게됩니다.


    사실 자기만 쓸거면 이런건 쓸데가 없습니다.

    하지만 다른 사람들도 사용하게 한다면 범용성을 생각해야하고 그래서 이런 방법도 강구하게 된거죠.


    일단 CoordMode 부터 알아봅시다.

    CoordMode의 AutoHotKey 공식 레퍼런스 설명입니다.


    CoordMode

    Sets coordinate mode for various commands to be relative to either the active window or the screen.

    CoordMode, ToolTip|Pixel|Mouse|Caret|Menu [, Screen|Window|Client]

    Parameters

    Param1

    ToolTip: Affects ToolTip.

    Pixel: Affects PixelGetColor, PixelSearch, and ImageSearch.

    Mouse: Affects MouseGetPos, Click, and MouseMove/Click/Drag.

    Caret: Affects the built-in variables A_CaretX and A_CaretY.

    Menu: Affects the Menu Show command when coordinates are specified for it.

    Param2

    If Param2 is omitted, it defaults to Screen.

    Screen: Coordinates are relative to the desktop (entire screen).

    Relative: Coordinates are relative to the active window.

    Window [v1.1.05+]: Synonymous with Relative and recommended for clarity.

    Client [v1.1.05+]: Coordinates are relative to the active window's client area, which excludes the window's title bar, menu (if it has a standard one) and borders. Client coordinates are less dependent on OS version and theme.

    Remarks

    If this command is not used, all commands except those documented otherwise (e.g. WinMove and InputBox) use coordinates that are relative to the active window.

    Every newly launched thread (such as a hotkey, custom menu item, or timed subroutine) starts off fresh with the default setting for this command. That default may be changed by using this command in the auto-execute section (top part of the script).

    Related

    Click, MouseMove, MouseClick, MouseClickDrag, MouseGetPos, PixelGetColor, PixelSearch, ToolTip, Menu

    Example

    CoordMode, ToolTip, Screen  ; Place ToolTips at absolute screen coordinates:
    CoordMode, ToolTip  ; Same effect as the above because "screen" is the default.


    툴팁 좌표 기준, 픽셀서치/이미지 서치의 좌표기준, 마우스 좌표기준 등을 지정합니다.

    기준은 Screen(전체화면), Relative(상대적), Window(윈도창), Client(실제 작업 영역)


    사실 Client로 기준을 잡으면 됩니다만 WinGetPos 명령에서 X,Y만 제대로 써먹을수 있을뿐 특히 Height(높이)값은 뭐가 뭔지 헷갈리고 Width나 Height를 활용하기 까다롭습니다.

    제 수학적인 머리가 단차원적인지라 그냥 기본값(Defualt)인 Screen(전체화면) 기준이 가장 좋은것 같습니다.


    간단하게 Screen, Relative, Window, Client의 X,Y값 차이를 알아보겠습니다.



    GIF 파일로 만들어본 CoordMode 별 x,y 값 차이입니다.


    실제 오토핫키로 매크로를 짜다보면 Relative나 Window, Client는 잘 사용되지 않더군요.

    습관인지 타성에 쩔어서 그런지 만들어놓은 100여개의 ahk파일들 모두 Screen 기준으로 만들은걸 보면요.


    아무튼 제가 사용하는 실제 윈도우 작업 영역 계산하는 방법입니다.

    관건은 SysGet입니다.

    시스템의 속성값이나 멀티모니터, 해상도등을 구하는 명령어인데요.

    SysGet,wFrame,32

    SysGet,wCaption,4


    wFrame,wCaption은 변수 지정으로 구한 값을 변수로 저장하는거고

    그 뒤에 32, 4 이 숫자는 ahk 도움말에 보면 리스트가 나옵니다.

    32는 Border값, 4는 제목 표시줄 높이값입니다.

    Border값의 경우 윈도우 프로그램에 따라 다를 수 있습니다.

    또한 가로 세로 테두리가 다른 경우도 있으니 따로 변수로 받아야하는 경우도 있습니다.

    따라서 테스트 후 정확하지 않다면 다른 값을 넣어서 테스트하세요.

    참고로 오토핫키 도움말 창의 경우 32,33(수직,수평 테두리)이 정확했고,

    피파온라인3의 경우 7,8이 정확했습니다.

    또한 피파 온라인3의 경우 WinGet으로 얻는 MinMax값(최소,최대화 창 상태)이 최대화를 인식 못 해서...

    편법으로 StringRight로 1의 자리 숫자가 0보다 크면 창모드인걸로 인식하게 하면 됩니다.

    위 방법은 1024*768 같은 해상도에선 안 먹히므로

    WinGet,WinStyle,Style,A

    로 해당 프로그램의 최대화창 상태일때의 변수값을 비교해서 판단하면 됩니다.

    참고로 제 컴퓨터 기준 피온3의 최대화 상태일때 값은 0x96000000 이네요.


    윈도우 창의 구성은 테두리+제목 표시줄(캡션)에 둘러쌓여있습니다.

    따라서 WinGetPos로 얻은 값에서 (WinGetPos,x,y,w,h,A)

    위 SysGet으로 얻은 테두리, 제목 표시줄 두께를 적절히 더하고 빼서 영역을 계산합니다.

    X=x+wFrame

    Y=y+wFrame+wCaption

    Width=w-wFrame*2

    Height=h-wCaption-wFrame*2





    이렇게 계산하여 얻은 영역 좌표를 표시하면 아래와 같습니다.

    분홍색 부분이 계산되어 나온 영역입니다.




    이렇게 계산하여 나온 영역은 창을 최대화하던지 마음대로 크기를 조절하던지, 테마를 변경하여 테두리가 두껍던지 얇던지 상관없이 정확한 영역값으로 매크로 작업을 가능하게 합니다.


    예제를 위해 만든 스크립트 코드입니다.

    사용자 정의 함수 RealWinSize()를 WinGetPos 대신 사용하면 됩니다.

    어떤크기던지, 최대화 상태 상관없이 정확한 작업영역을 계산할 수 있다면 어느 컴퓨터에서 실행하던 동일한 결과를 얻을 수 있습니다.


    #NoEnv
    #SingleInstance force
    
    RealwinSize(ByRef Xpos,ByRef Ypos,ByRef Width,ByRef Height){
    	WinGetPos,x,y,w,h,A ; A는 현재 활성화된 창
    	SysGet,wFrame,32 ; 현재 시스템의 Border값 (창 테두리 두께)
    	SysGet,wCaption,4 ; 현재 시스템의 Caption값 (제목 표시줄 높이)
    	Xpos:=x+wFrame
    	Ypos:=y+wFrame+wCaption
    	Width:=w-wFrame*2
    	Height:=h-wCaption-wFrame*2
    	return
    }
    
    ^Home::
    RealwinSize(x,y,w,h)
    Gui, 1:New
    Gui, 1:-Caption -Border +AlwaysOnTop
    Gui, 1:color, 0xFF44AA
    Gui, 1:Show,% "x" x  " y" y " w" w " h" h,Area
    WinSet, Transparent, 60, Area
    Sleep,5000
    Gui, 1:Destroy
    return
    


    저작자표시 비영리 변경금지 (새창열림)
    'Tip/AHKmacro' 관련 글 more
    • thumbnail
      [AHK] 바이두 클라우드 프록시 전환 좀 더 진화된 버전 2014.05.11
    • thumbnail
      [AHK] 피파온라인3용 엑박패드 유저를 위한 도우미 ver 2.0 2014.04.13
    • thumbnail
      [AHK] 조아라 자동 로그인 + 마나 모으기 매크로 2014.04.01
    • thumbnail
      [AHK] 오토핫키 컴파일된 exe 파일... 괜찮을까? 2014.02.04
    Posted by 확인소장

바로가기

  • thumbnail 이미지 외부링크용 구글 드라이브
  • thumbnail 대기오염 실시간 확인

블로그 내용 검색

블로그 이미지

인터넷 기술, 오토핫키, 바이두 클라우드 한글화

by 확인소장

공지사항

    최근...

  • 포스트
  • 댓글
  • 더 보기

태그

  • BaiduYunGuanjia
  • ADD
  • Android
  • baidu
  • 百度
  • 바이두
  • BaiduYunApp
  • 한국어
  • baiduyun app
  • apk 한글화
  • 한국어 패치
  • AHK
  • Baidu cloud app
  • 바이두 클라우드
  • BaiduCloud
  • 百度音乐
  • 바이두 앱
  • baidunetdisk
  • GUI
  • 바이두 뮤직
  • BaiduYun
  • 바이두 한글
  • 百度云管家
  • 한글화
  • 클라우드 한글화
  • 바이두 한글화
  • 한글패치
  • autohotkey
  • Baidu Cloud
  • 百度云

글 보관함

«   2025/06   »
일 월 화 수 목 금 토
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

링크

카테고리

  • 모든 글타래 (266)
    • Patch (158)
      • BaiduCloud (147)
      • BaiduMusic (7)
      • XiamiMusic (2)
    • Tip (86)
      • AHKmacro (20)
      • BaiduCloud (36)
      • PC활용 (29)
    • Monologue (13)
    • ETC (3)
    • Temp (6)

카운터

Total
Today
Yesterday
  • 홈
  • 방명록
  • 링크추가
확인소장's Blog is powered by daumkakao
Skin info material T Mark 5+ by 뭐하라
favicon

W기술과 생활

인터넷 기술, 오토핫키, 바이두 클라우드 한글화

  • 홈
  • 방명록
  • 링크추가

관리자 메뉴

  • 관리자 모드
  • 글쓰기
  • 모든 글타래 (266)
    • Patch (158)
      • BaiduCloud (147)
      • BaiduMusic (7)
      • XiamiMusic (2)
    • Tip (86)
      • AHKmacro (20)
      • BaiduCloud (36)
      • PC활용 (29)
    • Monologue (13)
    • ETC (3)
    • Temp (6)

카테고리

PC화면 보기
티스토리
Daum

티스토리툴바