VB.NET的Process.Start()立即停止
我在用下面的代码一个奇怪的问题,我正在写一个游戏启动在VB.NET:VB.NET的Process.Start()立即停止
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")
此代码工作正常使用大多数程序,但也有一些人(比如帝国时代),我得到如下:
比赛开始
游戏停止
我看到游戏在任务管理器中瞬间运行,但它立即关闭! 有谁知道为什么?当我从Windows运行游戏时,它工作正常。
我也试过与壳牌,同样的问题。
我试过使用cmd.exe和/ C参数,同样的问题(注意,当我在Windows运行对话框中输入cmd.exe/C path_to_game_exe时,游戏也可以正常启动),只有当我从它提供问题的VB.NET应用程序启动它。
我最后的想法是编写一个临时批处理文件并启动该文件,但这似乎是一个难看的解决方案。
您可以尝试的另一个选项是:在startinfo中设置工作目录属性。您可以通过查看开始菜单中游戏快捷键的属性来查找此信息。
http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.workingdirectory.aspx
很多游戏都使用启动器应用程序,在单独的进程中启动游戏,然后关闭。
虽然没有这种情况,但是这个游戏没有启动器exe,当我手动启动游戏时,进程名称与我开始的进程名称保持一致(所以它不会启动单独的进程)。 – Macuyiko 2009-07-27 12:39:27
它可能是复制保护功能,用于检测系统上的调试器并退出过程。
尝试在发布模式下编译游戏,并在Visual Studio未运行时运行应用程序。
应该提到我尝试在发布模式下编译(我认为调试器可能会做一些奇怪的事情)。没有骰子:(。 – Macuyiko 2009-07-27 12:41:14
什么是Windows事件日志说? – AutomatedTester 2009-07-27 12:34:09
事件日志说没有afaik,也检查过之前。 – Macuyiko 2009-07-27 12:44:52