作業中の2モニターユーザーとして、アプリケーションが開くモニター(プライマリまたはセカンダリモニター、アプリケーションが最後に開いたモニターなど)に関してアプリケーションの動作が異なることに気付きました。正直に言うと、一部のアプリケーションはプライマリモニターで開いてほしいので私を困らせ、必要な場合はセカンダリに移動します。ただし、これらのアプリケーションは完了し、自分の制御の及ばないため、2台のモニターを使用しているユーザーが実行する可能性がある自分のアプリケーションについて質問したいと思います。
どの種類のコントロールを使用して、ユーザーがアプリケーションを開くモニターを指定できるか、アプリケーションが閉じていたときにモニターがあったことをアプリケーションに「記憶」させて、アプリケーションを特定のモニターで強制的に起動できるようにするか?
すべてのオペレーティングシステムとプログラミング言語にまたがるソリューションを探していますが、OSや言語が異なれば、制御も異なると思います。
私は、Windowsプログラマーとして、アプリによって作成されたWindowsの起動モニターをaで制御します。アプリの最後の位置をレジストリに保存し、それを復元すること、およびb。保存された情報がないため、Windowsがデフォルトのロジックを使用してアプリを配置するために使用する魔法のフラグ値に開始位置を設定します。 MSがユーザーエクスペリエンスを向上させると、デフォルトのロジックはOSからOSに変わりますが、ユーザーが見ている可能性が最も高いどのモニターでもアプリが確実に起動する傾向があります。
マルチモニターWindowsを使用するユーザーとしてXP/Vistaシステムの場合、アプリケーションの開始位置を設定できるnVidiaデスクトップマネージャーを使用します。そうしないと、適切な動作が行われません。
考慮すべき1つのことは、アプリケーションの呼び出しの間にモニター構成が変更されている可能性があることです(たとえば、ドッキングされていて外部モニターを使用するラップトップで実行されている場合など)。アプリケーションが可視範囲に配置されていることを確認してください。
APIに関しては、その情報の一部を提供するSystem.Windows.Forms.Screenクラスがあります。
従来のUnixおよびLinuxのウィンドウマネージャーの観点からは、ユーザーは制御できません。ウィンドウマネージャはウィンドウの配置を処理します。
ウィンドウマネージャにヒントを与えることができるかもしれませんが、そのようなことを無視するようにウィンドウマネージャを設定することが可能であるべきです。プログラムからウィンドウを移動または配置すると、大きな仮想デスクトップを使用しているときに簡単に痛みが生じます。
参照: http://standards.freedesktop.org/wm-spec/wm-spec-latest.html
KDE 4.13.3(多分これより古いものと新しいものではこれを行うことができます)(翻訳が不正確かもしれません-私はポーランド語バージョンを使用します):