2010-03-26 4 views
2

하나의 중앙 프로그램에서 이전의 모든 C++ 프로그램을 사용할 수있는 C# 양식 응용 프로그램을 만들려고합니다.Process.start()를 사용하여 C# 형식의 C++ exe 실행

Process.Start()으로 exes를 열 수 있지만 코드를 올바르게 컴파일하지 않습니다.

예제 코드 :

Process.Start("C:\\\Documents and Settings\\\dan\\\Desktop\\\test.exe"); 

이 콘솔을 제기하고 실행처럼 행동하지만, 내가 일반적으로 C++ 편집기에서 컴파일 할 때처럼 실행되지 않는 것입니다. startinfo 변수가 C++ 프로그램이나 그 라인에있는 것임을 나타 내기 위해 설정해야합니까?

process.start을 사용하는 C++ 프로그램을 실행할 수있는 방법이 있습니까? argcargv을 통해 명령 줄을 통해 변수를 전달할 수 있습니까?

감사합니다.

+0

같은 의미로 실행되지 않는다는 의미는 무엇입니까? 다른 무엇입니까? –

+1

@ Dan : 왜 C++ test.exe는 다른 언어와 비교하여 C++로 작성되었는지 알고 있거나 신경 써야합니까? 당신이 보는 것과 기대 한 것과의 정확한 차이는 무엇입니까? –

+0

완전히 실행되지 않고, 콘솔을 시작하고, 첫 번째 몇 개의 프롬프트 라인과 정지를 인쇄하고, 출력을 생성하기 위해 모든 단계를 실행하지 않습니다. 나는 여러 다른 C++ exes와 함께이 모든 것을 시도해 보았다. – Dan

답변

5

당신이 Process.Start를을 차이의 부부가 사용됩니다

+0

감사합니다. 작업 디렉토리를 변경하고 쉘 실행을 true로 설정하면 올바르게 작동합니다. 신속한 답변을 위해 다시 한 번 감사드립니다. – Dan

1

지금까지 최종 질문에 답변 할 수있는 충분한 정보가 있습니다. 예, 명령 줄 인수를 shown here으로 포함 할 수 있습니다.

Process process = new Process(); 
process.StartInfo.FileName = "C:\\Documents and Settings\\dan\\Desktop\\test.exe"; 
process.StartInfo.Arguments = ""; // Put your arguments here 
process.Start(); 
1

이 명령 줄 인수를 추가하려면 "EXE (C#을) ===를 실행 === 프로그램 '섹션 봐 프로그램을 직접 실행했을 때와 비교했을 때의 결과입니다. 둘 다 ProcessStartInfo을 사용하여 해결할 수 있습니다.

  1. WorkingDirectory은 동일하지 않습니다. 실행 파일이 포함 된 경로로 설정하여 동일한 동작을 얻습니다.
  2. UseShellExecute을 true로 설정하면 Windows 셸이 프로세스를 실행하는 데 사용됩니다.

명령 줄 인수 추가 : ProcessStartInfo.Arguments을 통해 가능합니다. 그러나 C++ 응용 프로그램으로 인해 하나만 있으면 안됩니다. 프로그램이 EXE 파일로 컴파일 된 후

0

, 그것은이 작성되었습니다 어떤 언어 문제가 안된다. 프로그램 인수로

을, 당신은 ProcessStartInfo를 클래스에보고하고 재정의를 취할 필요 그것을 사용하는 Process.Start() 사용 : Process.Start(ProcessStartInfo)

0

나는 파이썬에서 비슷한 문제에 직면했다, 당신은 자세한 출력을 기대합니까?

내 경우 출력 버퍼가 가득 차서 실행이 지연되었습니다.