제어 전송

제어 전송

저는 주로 크롬을 사용하지만 크롬을 사용할 수 있는 브라우저라면 무엇이든 사용할 수 있습니다.

Windows 10에서는 현재 활성화되어 있지 않은 창이라도 마우스를 위에 놓고 스크롤 휠을 사용하여 모든 창을 스크롤할 수 있습니다.

비활성 창의 브라우저 탭을 전환하는 것이 가능합니까?

TBH 예전에 왼쪽/오른쪽 스크롤(적어도 내 마우스의 소위 기능인 로지텍 기능)이 작동했던 것을 기억하는 것 같지만 더 이상 그렇지 않은 것 같습니다.

편집: 같은 질문을 하려고 했는데 SU가 이미 그렇게 했다고 말하더군요. 그러니까 쿵...

답변1

그렇게 할 수 있는 한 가지 방법은 다음을 사용하여 AHK 스크립트를 사용하는 것입니다.ControlSend시뮬레이션된 키 입력을 원하는 창에 직접 전달하는 기능입니다(비활성 창, 최소화 또는 숨겨진 창에 수행할 수 있음). 그런 다음 편의를 위해 어떤 시퀀스든 바로 단축키에 직접 바인딩할 수 있습니다. 페이지가 다운될 경우를 대비해 AHK 문서 페이지(위에 링크됨)에서 직접 복사한 내용은 다음과 같습니다.

제어 전송[원시]

시뮬레이션된 키 입력을 창이나 컨트롤로 보냅니다.
ControlSend [, Control, Keys, WinTitle, WinText, ExcludeTitle, ExcludeText]
ControlSendRaw: 위와 동일한 매개변수.

매개변수

제어

ClassNN(컨트롤의 클래스 이름 및 인스턴스 번호) 또는 컨트롤의 텍스트일 수 있으며 둘 다 Window Spy를 통해 확인할 수 있습니다. 텍스트를 사용할 때 일치 동작은 SetTitleMatchMode에 의해 결정됩니다. 이 매개변수가 비어 있거나 생략된 경우 대상 창의 최상위 컨트롤이 사용됩니다. 이 매개변수가 ahk_parent이면 키 입력은 해당 컨트롤 중 하나 대신 대상 창으로 직접 전송됩니다(예제는 Winamp 자동화 참조).
컨트롤의 HWND(창 핸들)에 대해 작동하려면 Control 매개 변수를 비워두고 WinTitle 매개 변수에 대해 ahk_id %ControlHwnd%를 지정합니다(이는 DetectHiddenWindows가 꺼져 있는 경우에도 숨겨진 컨트롤에도 작동합니다). 컨트롤의 HWND는 일반적으로 ControlGet Hwnd, MouseGetPos 또는 DllCall()을 통해 검색됩니다.

열쇠

보낼 키의 순서(자세한 내용은 보내기 명령 참조) 문자 그대로의 쉼표를 보내려면 이스케이프 처리(`,)하세요. 문자가 전송되는 속도는 SetKeyDelay에 의해 결정됩니다. Send 명령과 달리 마우스 클릭은 ControlSend로 보낼 수 없습니다. 이를 위해서는 ControlClick을 사용하십시오.

윈타이틀

대상 창을 식별하는 창 제목 또는 기타 기준입니다. WinTitle을 참조하세요.

WinText

존재하는 경우 이 매개변수는 대상 창의 단일 텍스트 요소의 하위 문자열이어야 합니다(포함된 Window Spy 유틸리티에 의해 표시됨). DetectHiddenText가 켜져 있으면 숨겨진 텍스트 요소가 감지됩니다.

제목 제외

제목에 이 값이 포함된 창은 고려되지 않습니다.

텍스트 제외

텍스트에 이 값이 포함된 창은 고려되지 않습니다.

오류 처리

[v1.1.04+]: 이 명령은 실패 시 예외를 던질 수 있습니다. 자세한 내용은 런타임 오류를 참조하세요.

ErrorLevel은 문제가 있으면 1로 설정되고, 그렇지 않으면 0으로 설정됩니다.

비고

ControlSendRaw는 {Enter}를 Enter로, ^c를 Control+C로 변환하지 않고 Keys 매개변수의 키 입력을 보냅니다. 자세한 내용은 Raw 모드를 참조하세요. ControlSend와 함께 {Raw} 또는 {Text}를 사용하는 것도 유효합니다. [v1.1.27+]: 텍스트 모드는 텍스트 전송에 더 안정적일 수 있습니다.
Control 매개변수가 생략된 경우, 이 명령은 최상위 컨트롤(종종 올바른 컨트롤) 또는 컨트롤이 없는 경우 창 자체로 전송하여 대상 창으로 직접 전송을 시도합니다. 이는 창에 컨트롤이 전혀 없는 것처럼 보이거나 어떤 컨트롤로 보낼지 걱정할 필요가 없는 편의를 위해 유용합니다.
기본적으로 수정자 키 입력(Control, Alt, Shift 및 Win)은 일반적으로 Send 명령을 통해 전송됩니다. 이를 통해 명령 프롬프트 및 기타 콘솔 창에서 대문자, 제어 문자 등을 올바르게 감지할 수 있습니다. 또한 다른 방법으로 안정성을 향상시킬 수도 있습니다.
그러나 어떤 경우에는 이러한 수정자 이벤트가 활성 창을 방해할 수 있습니다. 특히 사용자가 ControlSend 중에 적극적으로 입력 중이거나 Alt 키가 전송되는 경우(Alt가 활성 창의 메뉴 표시줄을 활성화하므로) 더욱 그렇습니다. 이 예와 같이 modifier up 및 down 이벤트를 명시적으로 보내면 이를 방지할 수 있습니다.

ControlSend, Edit1, {Alt down}f{Alt up}, Untitled - Notepad
위의 방법을 사용하면 워크스테이션이 잠겨 있는 동안(로그온 프롬프트로 보호됨) 수정자 키 입력(Ctrl/Alt/Shift/Win)을 보낼 수도 있습니다.
명령 프롬프트와 같은 콘솔 창에 대해 ControlSend를 사용할 때는 BlockInput을 피해야 합니다. 이는 Ctrl과 같은 대문자 및 수정자 키가 제대로 작동하지 않을 수 있기 때문입니다.
SetKeyDelay 값은 키가 전송되는 속도를 결정합니다. 대상 창이 키 입력을 안정적으로 수신하지 못하는 경우 다음 예제와 같이 SetKeyDelay의 두 번째 매개 변수를 통해 누르는 기간을 늘려 보십시오. SetKeyDelay, 10, 10 SetKeyDelay, 0, 10 SetKeyDelay, -1, 0 대상 컨트롤이 편집 컨트롤(또는 이와 유사한 것)인 경우 일반적으로 다음이 보다 안정적이고 빠릅니다. ControlSend: Control, EditPaste, This text will be inserted at the caret position., ControlName, WinTitle
ControlSetText, ControlName, This text will entirely replace any current text., WinTitle
ControlSend는 일반적으로 창의 메뉴 표시줄을 조작할 수 없습니다. 이 문제를 해결하려면 WinMenuSelectItem을 사용하십시오. 메뉴 표시줄의 특성으로 인해 이것이 가능하지 않은 경우 SendMessage 튜토리얼을 따라 원하는 메뉴 항목에 해당하는 메시지를 찾아볼 수 있습니다.
창 제목과 텍스트는 대소문자를 구분합니다. DetectHiddenWindows가 켜져 있지 않으면 숨겨진 창은 감지되지 않습니다.

관련된

SetKeyDelay, 이스케이프 시퀀스(예: `%), Control, ControlGet, ControlGetText, ControlMove, ControlGetPos, ControlClick, ControlSetText, ControlFocus, Send, Winamp 자동화...

관련 정보