ShellExecuteEx を使用して、自分のアプリケーションからアプリケーションを起動しています。私のアプリケーションの機能の 1 つは、起動するアプリを開いたときに最大化できるようにすることです。これSW_SHOWMAXIMIZED
は、SHELLEXECUTEINFO 構造体の nShow フィールドにフラグを追加できるため、99% の確率で正常に機能します。
現在、アプリケーション自体を最大化できないものがあります (タイトル バー領域の最大化ボタンがグレー表示されています)。その一連のアプリケーションの中にはcalc.exe
、SW_MAXIMIZE フラグを無視してデフォルト サイズで起動するものもあります。残念ながら、他のアプリは -- のようにcharmap.exe
-- どうにかして最大化して開くことができます (そのせいで奇妙に見えます)。
(1) これは私が対処しなければならない特定のアプリケーションのバグなのか、(2) これを止めるためにもっとうまくやれることがあるのか、(3) いくつか考え出す必要があるのかを判断しようとしています。明らかでない回避策。どんな助けでも感謝します。
SHELLEXECUTEINFO info = { 0 };
info.cbSize = sizeof(SHELLEXECUTEINFO);
info.lpVerb = L"open";
info.lpFile = appPathEx.c_str();
info.nShow = SW_SHOWMAXIMIZED;
info.fMask = SEE_MASK_DOENVSUBST |
SEE_MASK_FLAG_NO_UI;
BOOL ok = ShellExecuteEx(&info);