スタートアップフラグをSTARTF_USESHOWWINDOWおよびSW_HIDEに設定してCreateProcess()を使用して、ウィンドウを隠した状態でバックグラウンドでアプリケーションを開始します。 私はスケジュールされたメンテナンスタスクを実行するためにこれをやっているので、私は窓に煩わされたくありません。隠しプロセスの作成(ウィンドウが表示されません)
ほとんどの場合、ウィンドウは非表示になっていますが、プログラムのウィンドウがすぐにポップするケースがあります(たとえば、GoogleのChrome - これは一度の問題かどうかを確認するために別のアプリケーションでテストを開始しました。 ..)。
これはWindows XPではあまり発生しませんが、Vistaでは多く発生します。
私には紛失している旗がありますか?ウィンドウを隠してプロセスを作成する方法はありますか?
ありがとう!
私のサンプルコードは次のとおりです。
char *ProgramName
STARTUPINFO StartupInfoF;
PROCESS_INFORMATION ProcessInfoF;
memset(&StartupInfoF, 0, sizeof(StartupInfoF));
memset(&ProcessInfoF, 0, sizeof(ProcessInfoF));
StartupInfoF.cb = sizeof(StartupInfoF);
StartupInfoF.wShowWindow = SW_HIDE;
StartupInfoF.dwFlags = STARTF_USESHOWWINDOW;
if (CreateProcess(ProgramName,
"",
0,
0,
FALSE,
DETACHED_PROCESS,
0,
0,
&StartupInfoF,
&ProcessInfoF) == FALSE)
{
// error
}
else
{
// OK
}
これはうまくいくようですが、私はエラーが発生しているとMSDNを検索した後、私はDESKTOP_CREATEWINDOW権限を持っている必要はないと言います。私のプロセスの特権を変更し、DESKTOP_CREATEWINDOWを追加する方法を知っていますか? – wonderer
私はそれを把握します。 createdesktopが答えでした。ありがとう! – wonderer