![AutoHotKey는 실행하지 않고 미리 입력된 텍스트로 cmd를 실행합니다.](https://rvso.com/image/1692528/AutoHotKey%EB%8A%94%20%EC%8B%A4%ED%96%89%ED%95%98%EC%A7%80%20%EC%95%8A%EA%B3%A0%20%EB%AF%B8%EB%A6%AC%20%EC%9E%85%EB%A0%A5%EB%90%9C%20%ED%85%8D%EC%8A%A4%ED%8A%B8%EB%A1%9C%20cmd%EB%A5%BC%20%EC%8B%A4%ED%96%89%ED%95%A9%EB%8B%88%EB%8B%A4..png)
기존 Q&Acmd
실행 중인 명령을 처리하지만 사용할 때마다 명령의 일부가 변경되므로 미리 입력된 텍스트로 열고 싶습니다 .
완전히 더미적인 예입니다. 미리 입력된 상태 cmd
로 시작하고 싶습니다 . 이는 의도적인 것입니다(내가 본 일부 예에서는 탈출 문제가 있습니다). 그런 다음 수동 으로 추가하여 삭제 합니다 .del "py" --arg
"
main
main.py
그것은 가능합니까? 가 즉시 실행되지 않고 입력이 다른 곳으로 이동할 수 있기 때문에 가 아닌 다른 것을 찾은 다음 Run cmd.exe
"기다립니다" .SendInput
cmd
답변1
1) WinWaitActive를 사용하여 명령 프롬프트가 열려 있는지 확인하고 2) 때때로 루프에서 입력을 전송하는 두 가지를 제외하고는 마지막 문장에 가까운 것을 사용합니다(명령 프롬프트가 시작될 때마다 무언가를 입력합니다). WinActive가 여전히 활성화되어 있는지 확인하십시오(즉, 다른 창이 포커스를 훔치면 전송을 중지하십시오).
이렇게 하면 100% 다른 곳으로 텍스트가 전송되는 것을 피할 수는 없지만 대부분의 경우 작동합니다(귀하의 예에서는 명령을 세 부분으로 나누고 그 사이에 WinActive를 확인하여 각 부분을 보낼 수도 있습니다. 창 초점 문제였습니다).
SendInput 외에 유일한 다른 옵션은 창 ID로 창에 텍스트를 보내는 것인데, 다양한 프로그램에서 성공률이 낮았습니다(ControlSend 참조).
하지만 실제로 귀하가 요청한 작업을 수행하는 프로그래밍 방식의 방법이 있다면 그것은 좋을 것입니다(어쩌면 다른 사람이 알 수도 있습니다).
최소한의 코딩 발췌에 대한 응답으로 2부 게시...
파트 A)
이 프레임워크는 창이 처음 나타날 때만 함수를 호출하는 데 사용할 수 있습니다. 설정 매개변수의 옵션 'C'입니다. 창을 기다리기 위해 자신만의 간단한 버전을 작성할 수 있지만 이 스크립트는 포커스가 이동하고 다시 돌아오는 경우 다시 실행하는 것과 비교하여 이미 표시된 창을 추적합니다.
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가 표시됩니다.