AutoHotKey를 사용하여 Chrome의 웹 페이지 렌더링 부분만 캡처합니다.

1887 단어 AutoHotkey

모티프

  • 일반 앱으로 크롬의 squist를 촬영하면 제목 표시줄 등이 들어간다.

  • Fireshot 해당 확장을 통해 대응할 수 있지만 로컬에서 SNS에 저장하거나 게시하는 데 약간의 시간이 걸리거나 비용이 든다
  • 귀찮아서 핫키로 저장이나 투고를 한꺼번에 지우고 싶어요
  • AutoHotKey 대응


    그렇다면 어떻게 웹 페이지에 표시된 부분만 캡처할 수 있습니까?
    AU3Spy 조사에 따르면 이 부분에 통제명Chrome_RenderWidgetHostHWND1이 배정됐다.
    따라서 명령ControlGetPos을 통해 이 부분의 좌표 정보를 얻을 수 있다.
    단, 활성 창 안의 상대 좌표를 얻을 수 있기 때문에 WinGetPos에서 활성 창의 좌표를 얻어 계산해야 한다.
    좌표 정보를 얻을 수 있다면 좌표를 지정하고 캡처할 수 있는 명령행 도구(예를 들어 NirCmd를 통해 간단하게 캡처할 수 있다.
    ss.ahk
    PrintScreen::
        ssDir = C:\Users\Public\Pictures\Capture
        ssFile = %ssDir%\%A_Now%.jpg ; 日時からファイル名を生成
        SetTitleMatchMode, RegEx ; ウィンドウタイトルを正規表現マッチ
        If WinActive(" - Google Chrome$ ahk_exe chrome.exe") ; Chromeブラウザがアクティブの場合
        {
            WinGetPos, ssX, ssY, , A ; アクティブウィンドウの座標を取得
            ControlGetPos, CX, CY, ssW, ssH, Chrome_RenderWidgetHostHWND1, A, , ; コントロールの相対座標および幅・高さを取得
            ssX += %CX% ; コントロールのX座標計算
            ssY += %CY% ; コントロールのY座標計算
            RunWait, "C:\apps\nircmd-x64\nircmd.exe" savescreenshot %ssFile% %ssx% %ssy% %ssw% %ssh%, ,
        }
        Else ; Chrome以外の場合、アクティブウィンドウ全体をスクショ
        {
            RunWait, "C:\apps\nircmd-x64\nircmd.exe" savescreenshotwin %ssFile%, ,
        }
        Return
    #IfWinActive
    
    크롬의 능동 판정에는 다양한 방법이 있지만, 크롬계 애플리케이션(Visual Studio Code 등)과 (현역으로 당분간) 크롬 앱 등을 배제하기 위해 실행 파일 이름과 창 제목으로 판정한다.
    이렇게 되면 정상적으로 타격을 입게 된다.

    좋은 웹페이지 즐겨찾기