【发布时间】:2014-08-26 03:06:56
【问题描述】:
我正在使用 CreateProcess MSDN call() 手动启动应用程序,这是我的代码
void LaunchProg()
{
STARTUPINFO si = new STARTUPINFO();
si.cb = Marshal.SizeOf(si);
si.lpDesktop = "testProg";
PROCESS_INFORMATION pi = new PROCESS_INFORMATION();
var lpCurrentDirectory = Path.GetDirectoryName(executablePath);
CreateProcess("c:\Windows\System32\notepad.exe", null,
IntPtr.Zero, IntPtr.Zero, true,
NORMAL_PRIORITY_CLASS, IntPtr.Zero, lpCurrentDirectory, ref si, ref pi);
}
此代码运行良好,并在指定的桌面“testProg”中启动程序,但问题是当 notepad.exe 创建一个具有新窗口的子进程时。此窗口显示在默认桌面中,而不是“testprog”桌面视图(活动桌面视图)中
不确定在同一个活动桌面中生成的所有子窗口的哪个参数设置不正确。我查看了文档,但对我来说不是很清楚。
更新观察:子进程不是从启动的应用程序继承的,而是在默认桌面中运行的系统进程的子进程。
任何指针?提前致谢!
【问题讨论】:
-
当然不是。这样可以清楚地说明问题。
-
您是如何说服记事本生成进程的?或者你可能在说谎。
-
转到查看并单击帮助。它产生 help.exe