78

Windows を使用しており、モニターが 2 台あります。

一部のアプリケーションは、閉じたときにどこにいても、常にプライマリ モニターで起動します。

他のものは、閉じたときの場所に関係なく、常にセカンダリモニターで開始されます。

デフォルトでどのモニターアプリケーションを起動するかを制御するために操作できる、どこかに埋め込まれたレジストリ設定はありますか?

@rp: 私は Ultramon を持っていますが、Microsoft がそれを購入して自社の OS に組み込むほど不可欠であることに同意します。しかし、あなたが言ったように、プログラムが起動するデフォルトのモニターを制御することはできません.

4

11 に答える 11

57

これが私が見つけたものです。デフォルトでセカンダリ モニターでアプリを開く場合は、次の手順を実行します。

1. Open the application.
2. Re-size the window so that it is not maximized or minimized.
3. Move the window to the monitor you want it to open on by default.
4. Close the application.  Do not re-size prior to closing.
5. Open the application.
   It should open on the monitor you just moved it to and closed it on.
6. Maximize the window.

アプリケーションは、デフォルトでこのモニターで開くようになりました。別のモニターに変更する場合は、手順 1 ~ 6 をもう一度実行してください。

于 2009-02-04T15:05:48.020 に答える
45

実行ごとに場所を保存したい正しく記述されたWindowsアプリは、GetWindowPlacement()シャットダウンする前に結果を保存し、SetWindowPlacement()起動時に使用して位置を復元します。

多くの場合、アプリは使いやすいように結果をGetWindowPlacement()レジストリに保存しREG_BINARYます。

このWINDOWPLACEMENTルートには、他の方法に比べて多くの利点があります。

  • 前回の実行以降に画面の解像度が変更された場合を処理します。SetWindowPlacement()ウィンドウが完全に画面外になっていないことを自動的に確認します
  • 状態(最小化/最大化)を保存しますが、復元された(通常の)サイズと位置も保存します
  • デスクトップメトリックを正しく処理し、タスクバーの位置などを補正します(つまり、「画面座標」の代わりに「ワークスペース座標」を使用します。画面座標の保存に依存する手法では、ウィンドウが常に表示される「ウォーキングウィンドウ」の問題が発生する可能性があります。ユーザーが画面の上部にツールバーを持っている場合は、毎回少し低くなります)。

nCmdShow最後に、ウィンドウの復元を適切に処理するプログラムは、シェルから渡されたパラメーターを考慮に入れます。このパラメーターは、アプリケーションを起動するショートカット(Normal、Minimized、Maximize)で設定されます。

if(nCmdShow != SW_SHOWNORMAL)
    placement.showCmd = nCmdShow; //allow shortcut to override

Win32以外のアプリケーションの場合、ウィンドウ位置の保存/復元に使用しているメソッドが最終的に同じ基になる呼び出しを使用することを確認することが重要です。そうしないと、(Java SwingのsetBounds()/getBounds()問題のように)多くの余分なコードを記述してしまうことになります。関数にすでに存在する機能を再実装しWINDOWPLACEMENTます。

于 2008-09-09T23:56:07.833 に答える
11

UltraMonを入手してください。素早く。

http://realtimesoft.com/ultramon/

アプリの起動するモニターを指定することはできませんが、マウスを1回クリックするだけで、アプリを別のモニターに移動し、アスペクト比を維持することができます。これは非常に便利なユーティリティです。

ほとんどのプログラムは、最後に残したところから開始されます。したがって、職場に2台のモニターがあり、自宅に1台しかない場合は、自宅でラップトップを起動しても、もう一方のモニター(現在は存在しません)で実行されているアプリが表示されない可能性があります。UltrMonを使用すると、これらの孤立したアプリをすばやく簡単にメイン画面に戻すこともできます。

于 2008-09-09T20:11:54.020 に答える
4

プライマリモニターがデフォルトであると確信しています。アプリが適切にコーディングされている場合、アプリを閉じると、最後の場所が記憶され、そこで再開されますが、お気づきのとおり、これはデフォルトの動作ではありません。

編集:私が通常行う方法は、アプリの設定に場所を保存することです。ロード時に値がない場合、デフォルトで画面の中央になります。フォームを閉じると、その位置が記録されます。そうすれば、それが開くときはいつでも、それが最後だった場所です。ただし、最初に2番目のモニターを自動的に起動するように指示する簡単な方法はわかりません。

-ケビンフェアチャイルド

于 2008-09-09T20:04:11.697 に答える
3

重要な注意事項: アプリケーションの位置を覚えていてシャットダウンし、その位置で再起動する場合は、アプリケーションを閉じている間にユーザーのモニター構成が変更された可能性があることに注意してください。

たとえば、ラップトップ ユーザーは頻繁にディスプレイ構成を変更します。ドッキングすると、ドッキングを解除すると消える 2 番目のモニターがある場合があります。ユーザーが 2 番目のモニターで実行されていたアプリケーションを閉じ、モニターが切断されたときにアプリケーションを再度開いた場合、ウィンドウを以前の座標に復元すると、ウィンドウは完全に画面外になります。

ディスプレイが実際にどれくらい大きいかを把握するには、GetSystemMetrics をチェックしてください。

于 2008-09-16T15:55:41.957 に答える
2

そのため、AdobeReader9.0でこの問題が発生しました。どういうわけか、プログラムは私の右のモニターで開くのを忘れて、私の左のモニターで一貫して開いていました。ほとんどのプログラムでは、ドラッグして画面を最大化し、閉じておくと記憶されます。さて、Adobeの場合、次に開く画面をWindowsが記憶できるように、最大​​化する前にドラッグしてから閉じる必要がありました。正しいモニターに設定すると、最大化できます。ほとんどすべてのWindowsプログラムは、XPが記憶する方法を整えようとせずに自動的に記憶するので、これはばかげていると思います。

于 2009-03-31T20:27:24.633 に答える
1

したがって、画面を最大化または右クリックして移動/サイズ変更し、閉じて再度開くことで、1つの画面で開くように構成できるアプリがいくつかあることに同意します。ただし、メイン画面でのみ開くものもあります。

私が解決したこと: 頑固なアプリを開きたいモニターをモニター 1 として設定し、他のモニターを 2 として設定し、モニター 2 をプライマリに変更して、デスクトップ設定とスタートバーが残るようにします。お役に立てれば。

于 2012-06-07T18:17:14.383 に答える
0

デスクトップの1つの画面にショートカットを配置すると、起動したアプリケーションがその画面に表示される場合があることに気付きました(そのアプリがそれ自体の位置を変更しない場合)

これは、Windowsエクスプローラーからの実行にも当てはまります。エクスプローラーが1つの画面にある場合、起動されたアプリケーションは使用するモニターを選択します。

繰り返しますが、これは、起動するアプリケーションがデフォルト(Windows管理)の位置を指定する場合だと思います。ほとんどのアプリケーションは、このデフォルトの動作を何らかの方法でオーバーライドしているようです。

そのように作成された単純なウィンドウはこれを行います:

hWnd = CreateWindow(windowClass、windowTitle、WS_VISIBLE | WS_OVERLAPPEDWINDOW、CW_USEDEFAULT、SW_SHOW、CW_USEDEFAULT、0、NULL、NULL、hInst、NULL);

于 2008-09-10T12:55:55.387 に答える
0

これに私を拘束しないでください、しかし私はそれがそれ自身のアプリケーションに依存することをかなり確信しています。多くの人が常にメインモニターで開いていることを知っています。以前に実行したのと同じモニターで再び開くものもあれば、設定できるものもあります。たとえば、特定のディレクトリへのコマンドウィンドウを開くためのショートカットがあり、それぞれのプロパティにウィンドウを開く場所へのオプションがあります。Outlookは、開いた最後の画面を記憶して開くだけですが、他のアプリ現在のフォーカスが入っているウィンドウで開きます。

したがって、すべてのプログラムにどこを開くかを指示する方法があるかどうかはわかりません。それがいくつかの助けになることを願っています。

于 2008-09-09T20:05:07.390 に答える
-3

ショートカットを右クリックし、プロパティを選択します。「ショートカット」タブにいることを確認してください。[実行] ドロップダウン ボックスを選択し、[最大化] に変更します。

これは、プライマリ モニターで全画面表示でプログラムを起動するのに役立つ場合があります。

于 2014-12-31T00:03:51.357 に答える