Windows 11でMainFormOnTaskBar=falseに設定しているアプリケーションは、 モニターの電源(オン/オフ)によって、フォームが最小化された状態から戻らなくなることがある

提供: Support
移動先: 案内検索

対象となるWindowsバージョン

  • Windows 11

問題

RAD Studio 11をご利用のお客様からWindows 11でマルチモニターを使用し、一時的にメインディスプレイの電源をOFF、そしてディスプレイの電源をONにすると、 アプリケーションのフォームは最小化されたまま元のサイズに戻らなくなる症状が発生するという報告がありました。


上記の症状が発生する条件としては、以下の通りです。

  • Windows 11の設定で「システム」-「ディスプレイ設定」-「マルチ ディスプレイ」で 「モニターが接続されていない時にウィンドウを最小化する」にチェック(既定値)

Thumb03002034ujpn.png



例えば、簡単な再現手順は以下の通りです。

  1. DelphiのVCLフォームアプリケーションを新規作成
  2. プロジェクトのメインルーチンのソース(例えば、Project1.dpr)を開き、Application.MainFormOnTaskBar := Trueの行を削除
    Thumb03002035ujpn.png
  3. Windows 11のマルチモニター環境で実行し、メインモニターにアプリケーションを表示
  4. メインモニターの電源をオフ(この際、Windows 11のオプションによってアプリケーションが最小化されます)
  5. メインモニターの電源をオンにします。
  6. メインモニターのWindows11タスクバーから最小化されたアプリケーションを元に戻す


上記の手順を実行すると、最小化されたアプリケーションが戻らない症状が発生する場合があります。 (ただし、ご利用になっている外部ディスプレイの種類によって、同じ手順で再現しないことがあります)

Delphi/C++Builder 2006以前のバージョンでビルドしているプロジェクトでは、Application.MainFormOnTaskBarの設定は存在せず、Application.MainFormOnTaskBar := Falseと同等の挙動になるため、上記のような症状が発生することがあります。


Delphi/C++Builder 2007以降のバージョンでのデフォルト設定は、Application.MainFormOnTaskBar=Trueのため お客様のプロジェクトで、この設定を変更していない場合は特に影響しません。

解決

お客様の作成しているプロジェクトで以下に該当する場合、

  • Delphi/C++Builder 2007以降でApplication.MainFormOnTaskBar = Falseに設定しているアプリケーション
  • Delphi/C++Builder 2006以前のバージョンでビルドしているアプリケーション

この問題の対処方法は、下図のようにWindows 11の設定で「システム」-「ディスプレイ設定」-「マルチ ディスプレイ」で 「モニターが接続されていない時にウィンドウを最小化する」のチェックを外して、フォームが最小化しない設定に変更する方法をお試しください。

Thumb03002033ujpn.png