2017-10-08 29 views
0

Delphi 10.1에서는 다른 외부 콘솔 프로그램을 실행하고 다른 외부 콘솔 프로그램이 종료 될 때까지 기다려야합니다. 그러나 다른 외부 콘솔 창은 작업을 마친 후에도 열려 있어야합니다. 외부 콘솔 프로그램이 종료 될 때까지 기다립니다Shellexecute and wait 및 콘솔 창을 열어 두시겠습니까?

ThisShellExecResult := JclShell.ShellExecAndWait(
    ThisProgram,  // Filename 
    ThisParameters, // Parameters 
    '',    // Verb (Operation) 
    ThisShowCommand, // ShowCommand (SW_SHOW or SW_HIDE) 
    ThisDirectory, // Directory 
); 

이 기능은 잘 작동 :

는 지금은이 JCL (JEDI) 함수를 사용합니다.

하지만 외부 콘솔 프로그램의 콘솔 창을 열린 상태로 유지하려면 어떻게해야합니까?

콘솔 창을 열어두기 위해 언급 된 매개 변수는 종종 /k입니다.

그러나 어떻게이 함수의 컨텍스트에 맞출 수 있습니까?

+0

'/ K'는'cmd.exe'의 명령 행 스위치입니다. 'ShellExecute/Ex()'또는'CreateProcess()'를 사용하여'cmd.exe/K otherprogram.exe'를 실행할 수 있습니다. –

답변

0

제 질문은 "하지만 어떻게이 기능의 맥락에 맞출 수 있습니까?" 내가 테스트하여 검증대로

ThisShellExecResult := JclShell.ShellExecAndWait(
    'cmd.exe',  // Filename 
    '/K ' + JclStrings.StrQuote(ThisProgram, '"') + ' ' + ThisParameters, // Parameters 
    '',    // Verb (Operation) 
    ThisShowCommand, // ShowCommand (SW_SHOW or SW_HIDE) 
    ThisDirectory // Directory 
); 

이 작품 : (여기서 매개 변수는 질문의 코드 예제와 같이 외부 프로그램에 전달되는), 여기에 대답이다.