3

を使用してUIを開始しようとしてCreateProcessAsUserいますが、ウィンドウがフォアグラウンドウィンドウとして表示されません。

通常のウィンドウであるかどうかは気になりませんが、このウィンドウはUACプロンプトをトリガーし、フォアグラウンドにも表示されません。

4

1 に答える 1

2

あなたの説明から、他のプロセスを昇格モードで起動しようとしているかのように聞こえます。それがあなたがやろうとしていることなら、それをフォアグラウンドウィンドウに設定することはできません。実際、昇格されていないプロセスは、昇格されたプロセスに何らかの方法/形状/形式で触れることはできません。

作成されたプロセスは、実際に独自のウィンドウをフォアグラウンド ウィンドウにする責任を負う必要があります。STARTUPINFOに渡す構造体で遊んで、フラグをCreateProcessAsUser設定し、の値を指定してみてください。それでもうまくいかない場合は、昇格した COM コンポーネントを作成するなど、最初に自分自身の一部を昇格させる以外に実際の回避策はありません。STARTF_USESHOWWINDOWSW_SHOWNORMAL

それが目的ではなく、単に子プロセスのウィンドウをフォアグラウンドに移動したい場合は、子プロセスが所有するウィンドウを列挙し、そのうちの 1 つでSetForegroundWindowを呼び出す必要があります。

于 2011-02-21T21:29:30.373 に答える