AutoHotKey는 실행하지 않고 미리 입력된 텍스트로 cmd를 실행합니다.

AutoHotKey는 실행하지 않고 미리 입력된 텍스트로 cmd를 실행합니다.

기존 Q&Acmd실행 중인 명령을 처리하지만 사용할 때마다 명령의 일부가 변경되므로 미리 입력된 텍스트로 열고 싶습니다 .

완전히 더미적인 예입니다. 미리 입력된 상태 cmd로 시작하고 싶습니다 . 이는 의도적인 것입니다(내가 본 일부 예에서는 탈출 문제가 있습니다). 그런 다음 수동 으로 추가하여 삭제 합니다 .del "py" --arg"mainmain.py

그것은 가능합니까? 가 즉시 실행되지 않고 입력이 다른 곳으로 이동할 수 있기 때문에 가 아닌 다른 것을 찾은 다음 Run cmd.exe"기다립니다" .SendInputcmd

답변1

1) WinWaitActive를 사용하여 명령 프롬프트가 열려 있는지 확인하고 2) 때때로 루프에서 입력을 전송하는 두 가지를 제외하고는 마지막 문장에 가까운 것을 사용합니다(명령 프롬프트가 시작될 때마다 무언가를 입력합니다). WinActive가 여전히 활성화되어 있는지 확인하십시오(즉, 다른 창이 포커스를 훔치면 전송을 중지하십시오).

이렇게 하면 100% 다른 곳으로 텍스트가 전송되는 것을 피할 수는 없지만 대부분의 경우 작동합니다(귀하의 예에서는 명령을 세 부분으로 나누고 그 사이에 WinActive를 확인하여 각 부분을 보낼 수도 있습니다. 창 초점 문제였습니다).

SendInput 외에 유일한 다른 옵션은 창 ID로 창에 텍스트를 보내는 것인데, 다양한 프로그램에서 성공률이 낮았습니다(ControlSend 참조).

하지만 실제로 귀하가 요청한 작업을 수행하는 프로그래밍 방식의 방법이 있다면 그것은 좋을 것입니다(어쩌면 다른 사람이 알 수도 있습니다).


최소한의 코딩 발췌에 대한 응답으로 2부 게시...

파트 A)

이 프레임워크는 창이 처음 나타날 때만 함수를 호출하는 데 사용할 수 있습니다. 설정 매개변수의 옵션 'C'입니다. 창을 기다리기 위해 자신만의 간단한 버전을 작성할 수 있지만 이 스크립트는 포커스가 이동하고 다시 돌아오는 경우 다시 실행하는 것과 비교하여 이미 표시된 창을 추적합니다.

https://www.autohotkey.com/board/topic/84397-winwait-framework-do-something-to-a-window-when-it-appears/

cmd.exe를 구성 섹션에 넣으면 다음과 같을 수 있습니다.

ahk_class ConsoleWindowClass ahk_exe i)cmd.exe              C       newCmdWindow(`%WA_ID`%)

스크립트는 위에 표시된 세 가지 텍스트 세트인 WinTitle, WindowType 및 Function 사이의 구성 섹션에서 [일반적으로 표시되지 않는] 탭을 사용합니다.

파트 B)

newCmdWindow()함수를 정의해야 합니다...

newCmdWindow(myID)
{

    strToSend:="REM :: USE " q("POPD") " TO JUMP BACK HERE..." "{Enter}" "pushd C:\Users\xxxx\Desktop" "{Enter}"        ; Init

    ;------------------------------------------------------
    ; Minimize collateral damage if window changes
    ;------------------------------------------------------
    Loop, Parse, % strToSend, %A_Space%    ; Parse on spaces
    {
        Sleep, 10 ; give window time to stabilize / make sure windows title isn't changing / minimize colateral damage if window changes
        If WinActive("ahk_id" myID)
            SendInput % (A_Index > 1) ? A_Space A_LoopField : A_LoopField

    }
}

(원래 사용: 이 기능은 모든 명령 프롬프트 위치에서 사용자 정의 폴더로 이동하므로 항상 열리는 '기본' 위치를 설정할 수 있지만 명령 프롬프트가 실행된 위치로 돌아갈 수도 있습니다. 예를 들어 탐색기 창에서 cmd.exe를 실행 popd하고 해당 폴더에서 명령 프롬프트를 사용하려는 경우 기본 폴더로 이동하지만 를 입력하면 다시 돌아올 수 있습니다 popd. 항상 열리는 하드 코딩된 기본 폴더)

창 감지 프레임워크가 준비되면 보내고 싶은 내용을 보내도록 기능을 설정하면 새 명령 프롬프트가 처음 활성화될 때 해당 내용이 전송됩니다.

답변2

만들기핫스트링

#IfWinActive Command Prompt ahk_exe cmd.exe
:*:---::del "py" --arg{space}

cmd 프롬프트를 열고 를 입력하면 ---cmd가 표시됩니다.

관련 정보