如何CreateProcessAsUser并使其成为前景窗口?

时间:2011-02-21 21:21:03

标签: c++ winapi windows-7 createprocess createprocessasuser

我正在尝试使用CreateProcessAsUser启动UI,但该窗口不是前景窗口。

我不介意它是否是一个普通的窗口,但是这个窗口会触发UAC提示,它也不会显示在前台。

1 个答案:

答案 0 :(得分:2)

从您的描述中,听起来好像您正试图以提升模式启动其他进程。如果您正在尝试这样做,则无法将其设置为前景窗口。事实上,不允许非升级过程以任何方式/形状/形式接触升高的过程。

创建的进程必须负责实际将其自己的窗口设置为前景窗口。尝试使用传递给STARTUPINFO的{​​{1}}结构,设置CreateProcessAsUser标记,并指定值STARTF_USESHOWWINDOW。如果这不起作用,除了首先提升部分内容之外,没有真正的解决方法,例如创建一个提升的COM组件。

如果那不是你想要做的,而你只是想将子进程的窗口移到前台,那么你必须enumerate windows owned by the child process然后在其中一个上调用SetForegroundWindow