/* CreateProcess initialization */
STARTUPINFO si;
PROCESS_INFORMATION pi;
memset(&si, 0, sizeof(si));
memset(&pi, 0, sizeof(pi));
si.cb = sizeof(si);
long ret;
// si.wShowWindow = SW_HIDE;
// hide process window.... // run in background..
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow = SW_HIDE;
if (!CreateProcess(0, exe,
0, 0, 1, NORMAL_PRIORITY_CLASS, 0, 0, &si, &pi)) {
return;
}
//int prez = WaitForSingleObject(pi.hProcess, INFINITE);
//CloseHandle(pi.hProcess);
答えて
新しいプロセスの作成者ではなく、新しいプロセスをタスクバーに登録します。これは、タスクバーに入るかどうかを決定するトップレベルのウィンドウを作成する新しいプロセスです。この決定は、新しいプロセスによって決定されるそのトップレベルウィンドウの拡張スタイルに基づいています。
つまり、これを行うには、この他のプロセスの最上位ウィンドウを突き刺す必要があります。
あなたはSW_HIDE
にSTARTF_USESHOWWINDOW
にごSTARTUPINFO
構造のdwFlags
メンバーとwShowWindow
メンバーを設定しようとすることができます。
これにより、nCmdShow
パラメータがWinMain
であるため、CreateProcess()
が0になります。ただし、すべてのWindowsアプリケーションが正常に動作しているわけではなく、ShowWindow()
の最初の呼び出しにこの値を使用します。
これはどのようにタスクバーにウィンドウが表示されるのを止めますか?メインウィンドウを最小化してアプリを起動することはできますが、それでもタスクバーには表示されますか? –
ShowWindow()は実際に呼び出されたときに渡された値を実際に無視し、この正確な問題を解決するためにSTARTUPINFOを使用します(これは文書化されています)。 – Anders
@David:最後にチェックしたところ、 'SW_HIDE'はウィンドウを最小化するのではなく、完全に非表示にして、タスクバーには表示されません。 –
あなたが開始したプロセスに関連付けられたウィンドウを見つけることができます(FindWindow
とEnumWindows
を参照)、およびSW_HIDE
でShowWindow
関数を呼び出します。または、WS_EX_APPWINDOW
を削除し、WS_EX_TOOLWINDOW
を追加して、ウィンドウの拡張スタイルを変更することもできます。
最も簡単な方法は、開始されたプロセスが設定を尊重している場合は、最初の回答の説明に従ってSTARTUPINFOを使用することです。
- 1. CreateProcessで作成されたプロセスの名前はどのように設定できますか?
- 2. どうすればスレッドループを作成できますか?
- 3. CreateProcessプロセスを開始できません。
- 4. すべてのプロセスがアクセスできるマップを作成するにはどうすればよいですか?
- 5. バイナリファイルとは何ですか、どうすれば作成できますか?
- 6. どのようにWindowsサービスがプロセスを作成できますか?
- 7. どうすればこのようなフォームを作成できますか?
- 8. どうすればこのようなプロットを作成できますか?
- 9. どうすればこのようなソープヘッダーを作成できますか?
- 10. メテオではどうすれば汎用イベントハンドラを作成できますか?
- 11. Python:どうすればPython関数を並列に実行できますか?
- 12. sqlite - コア関数に基づいてユーザー関数を作成できますか?
- 13. cssでwindows 7のタスクバーのようにぼかしを作成しますか?
- 14. 別のクラスの関数にはどうすればアクセスできますか?
- 15. SQL Serverでグローバル関数を作成できますか?
- 16. ASP.NETでどのようにアコーディオンコントロールを作成できますか?
- 17. どうすれば私のウェブサイトのオフラインバージョンを作成できますか?
- 18. C++でforkしたプロセスをどのようにしてkillできますか?
- 19. iPhoneで連絡先グループを作成できません。どうすれば解決できますか?
- 20. どのようにしてOnSelectedChangeでjquery関数を起動できますか?
- 21. どのようにしてPerlでハッシュのハッシュを作成できますか?
- 22. ノードとしてparamを使ってxsl:関数を作成できますか?
- 23. のCreateProcess:エラー作成プロセスが
- 24. どのようにしてPerlコードを隠すことができますか?
- 25. Pythonでctypesを使用してコールバック関数を作成するにはどうすればよいですか?
- 26. 逆の作業リンクはどうすればできますか?
- 27. Visual Studioでプロセスにどのようにアタッチできますか?
- 28. ラムダ関数をどのように使用できますか?
- 29. PostreSQLを使用して多次元配列を作成するにはどうすればできますか?
- 30. Flex-AIR:タスクバーのNOタブでアプリケーションを作成しますか?
WS_EX_APPWINDOWはウィンドウがタスクバーに表示される必要はありません。基本的なクロム(キャプション、境界線など)を持つ非表示のトップレベルの非ツールバーウィンドウは、そのスタイルがなくてもタスクバーボタンを表示します。 – Anders
@Andersありがとうその明確化のために。私の答えの主な感覚は正しいですが、あなたは言いませんか? –
@アンダー私は拡張ウィンドウスタイルでトピックを再読しました。 WS_EX_TOOLWINDOWを含むと、トップレベルウィンドウをタスクバーから除外します。とにかく、私はあなたがタスクバーに表示するために何をするのか、今混乱していますが、私はそれがCreateProcessの呼び出しではなく、トップレベルのウィンドウスタイルによって決定されると確信しています。 –