【发布时间】:2015-04-15 09:14:51
【问题描述】:
我有一个有趣的场景。我的执行过程是QtAgent32.exe(基本上用于自动化测试)。
我有启动被测应用程序的代码。如果我在运行此 EnsureAppIsRunning() 方法之前手动启动应用程序 - 然后它会从如下进程中获取应用程序:
_application = ApplicationUnderTest.FromProcess(processes[0]);
现在在测试运行结束时,QtAgent32.exe 关闭并终止应用程序 - 仅当应用程序是在进程中创建时。
再次重申,如果我手动打开了应用程序,那么它会使其保持活动状态 - 这是我想要的行为。
所以为了尝试解决这个问题,我使用了 Process.Start(),还尝试了 UseShellExecute - 这不起作用。
然后我转到非托管路线:
STARTUPINFO si = new STARTUPINFO();
PROCESS_INFORMATION pi = new PROCESS_INFORMATION();
CreateProcess(Constants.ApplicationUndertestPath, null, IntPtr.Zero, IntPtr.Zero, false, 0, IntPtr.Zero, null, ref si, out pi);
我的问题是,如何从 C# 启动和应用程序,以便将其视为完全成熟的外部进程(就像我手动启动它一样)。这样 QtAgent32 就不会在以后作为子进程将其杀死。
【问题讨论】:
标签: c#