VB.NET Process.Start()立即停止

时间:2009-07-27 12:29:26

标签: vb.net process

我遇到以下代码的奇怪问题,我正在VB.NET中编写游戏启动器:

Dim gameProcess As Process = New Process()
gameProcess.StartInfo.UseShellExecute = False
gameProcess.StartInfo.FileName = TextBox2.Text
gameProcess.Start()
Debug.Print("Game started")
gameProcess.WaitForExit()
Debug.Print("Game stopped")

此代码适用于大多数程序,但是对于其中一些程序(例如Age of Empires),我得到以下内容:

  

游戏开始

     

游戏停止了

我看到游戏在任务管理器中运行了一瞬间,但它会立即关闭! 有谁知道为什么?当我从Windows运行游戏时,它运行正常。

我也尝试过Shell,同样的问题。

我已尝试使用cmd.exe和/ C参数,同样的问题(请注意,当我在Windows运行对话框中键入cmd.exe / C path_to_game_exe时,游戏也会正常启动),它只在我启动时它来自VB.NET应用程序,它给出了问题。

我的最后一个想法是编写一个临时批处理文件并启动它,但这似乎是一个丑陋的解决方案。

3 个答案:

答案 0 :(得分:2)

许多游戏使用启动器应用程序,在单独的过程中启动游戏然后关闭。

答案 1 :(得分:2)

您可以尝试的另一个选项:在startinfo中设置工作目录属性。您可以通过查看startmenu中游戏快捷方式的属性来查找此信息。

http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.workingdirectory.aspx

答案 2 :(得分:0)

可能是复制保护,它会检测系统上的调试器并退出该过程。

尝试在发布模式下编译游戏,并在Visual Studio未运行时运行您的应用程序。