2011-11-02 3 views
4

그래서 저는 최근에 XNA 프로그램을 사용하여 다른 XNA 프로그램을 시작하기 시작했습니다. 저는 "Process.Start"라는 일반적인 방법을 사용했습니다.이 방법은 Firefox 나 Media Player를 열 때 잘 작동합니다. 그러나 XNA 프로그램을 시작할 때마다 "적절한 그래픽 카드를 찾을 수 없습니다. 그래픽 장치를 만들 수 없습니다.이 프로그램을 사용하려면 픽셀 쉐이더 1.1과 버텍스 쉐이더 1.1이 필요합니다."라는 오류 메시지가 나타납니다. 그래픽 장치가 XNA를 처리 할 수 ​​없을 때 이것을 오류로 인식합니다. 그러나 이미 XNA를 사용하고 있기 때문에 여기서는 문제가 아닙니다.다른 C# 프로그램으로 XNA 게임을 시작하는 방법

System.Diagnostics.Process process = new System.Diagnostics.Process(); 
process.StartInfo.FileName = Stat.clientfile; 
process.StartInfo.Arguments = ""; 
process.StartInfo.LoadUserProfile = true; 
process.StartInfo.UseShellExecute = false; 
process.StartInfo.WorkingDirectory = Stat.clientfile.Remove(Stat.clientfile.Length - 1 - Stat.clientfile.Split(Convert.ToChar(@"\"))[Stat.clientfile.Split(Convert.ToChar(@"\")).Length - 1].Length); 
process.StartInfo.RedirectStandardOutput = true; 
Stat.MessageBox(process.StartInfo.WorkingDirectory); 
process.Start(); 

을하지만 내가 생각할 수있는 Process.Start(filename)에 거의 모든 또한 시도 후입니다 :

내 코드는 현재 다음과 같습니다. 그것이 의미하는 경우 에이서 Netbook에 XNA 버전 3.1을 실행 해요.

누구든지이 문제가 무엇인지 이해하면 큰 도움이됩니다.

+0

나는 당신이 이것을 가리키고있는 exe를 실행 해 보았고, 정상적으로 작동한다고 가정한다. –

+2

무작위 추측 : 당신이 이것을 부르는 XNA 프로그램이 이미 컴퓨터의 그래픽 카드를 '인계 받았다'고 공유하고 싶지 않습니다. 프로그램 # 1이 실행되는 동안 수동으로 프로그램 # 2를 시작할 수 있습니까? – thedaian

+1

그래, 첫 번째 프로그램이 실행되는 동안 수동으로 두 번째 프로그램을 시작할 수 있습니다. 나는 XNA가 공유하고 싶지 않은 것에 대해 똑같은 생각을하고 있습니다. 그러나 그것이 사실이라면 어떻게 해야할지 모르겠습니다. – Kezip

답변

2

동일한 문제가 발생했습니다. 나는이 스레드 발견 : 하단 근처

http://forums.create.msdn.com/forums/p/94466/566353.aspx

을 Kezip는 "XNA 한 전체 화면에있는 동안 여러 프로그램의 실행을 허용하지 않았다."라고 두 프로그램을 전체 화면 모드에서 제거하면 문제가 해결됩니다.

+0

안녕 얘들 아, 미안 나는 이것으로 돌아 오지 않았다. 조는 옳았다. 그것은 실제로 제가이 책을 쓰는 것과 동시에저기서 만든 주제였습니다. 시스템을 속이고 XNA 대신 Windows.Form의 전체 화면을 사용해야했습니다. 귀하의 답변에 감사 드리며 다른 사람들에게도 도움이되기를 바랍니다. – Kezip

0

당신은 XNA 응용 프로그램과

process.StartInfo.RedirectStandardOutput = true; 

를 사용하지 못할.

왜? XNA 응용 프로그램은이 방법으로 다른 XNA 프로세스 내부에 그래픽 장치를 만들려고합니다. 100 % 실패합니다.

출력을 리디렉션하지 않으면 작동합니다. (XNA 4.0이 시험 szenarios에 나를 위해 일한 - 100 % 말할 기운이 3.1 동일한 경우)

편집 : 그런데

, 당신은 더 나은 귀하의 WORKINGDIRECTORY를 구축하려면이 옵션을 사용

process.StartInfo.WorkingDirectory = Stat.clientfile.Substring(0, Stat.clientfile.LastIndexOf('\\')); 
관련 문제