2

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);
4

1 に答える 1

0

MSDN:ショーウィンドウ:

nCmdShow パラメータの説明で説明したように、アプリケーションを起動したプログラムが構造体で起動情報を指定している場合、ShowWindow の最初の呼び出しで nCmdShow 値は無視されます。

しかし、多くのプログラマーはこの機能について知らないため、これらのアプリケーションのバグです。

于 2014-01-18T10:34:41.863 に答える