次のコードを使用して、メインウィンドウを非表示にしたアプリケーションを作成しています。
STARTUPINFO siStartupInfo;
PROCESS_INFORMATION piProcessInfo;
memset(&siStartupInfo, 0, sizeof(siStartupInfo));
memset(&piProcessInfo, 0, sizeof(piProcessInfo));
siStartupInfo.cb = sizeof(siStartupInfo);
siStartupInfo.dwFlags = STARTF_USESHOWWINDOW | STARTF_FORCEOFFFEEDBACK | STARTF_USESTDHANDLES;
siStartupInfo.wShowWindow = SW_HIDE;
if(CreateProcess(MyApplication, "", 0, 0, FALSE, 0, 0, 0, &siStartupInfo, &piProcessInfo) == FALSE)
{
// blah
return 0;
}
新しいプログラムを開くと、メインアプリケーション(このコードを呼び出すもの)ウィンドウがフォーカスを失うことを除いて、すべてが正しく機能します。新しいプロセスの優先度を下げてみましたが、フォーカスの問題はまだ残っています。
これを回避する方法はありますか?さらに、CreateProcess(またはShellExecuteのようなCreateProcessを呼び出すAPI)を使用せずに別のプロセスを作成する方法はありますか?
私の推測では、アプリが非表示になっている場合でも、新しいプロセスに割り当てられたため、アプリのフォーカスが失われています。
いつもの「なぜこれをやりたいのか」と確かに尋ねる興味のある方には、私の答えは、サービスにできないウォッチドッグプロセスがあり、メインアプリケーションを開くたびに開始されるためです。満足?
助けてくれてありがとう。コードをいただければ幸いです。ジェス。