Pertanyaan Apa yang menentukan monitor di mana aplikasi saya berjalan?


Saya menggunakan Windows, dan saya punya dua monitor.

Beberapa aplikasi akan selalu mulai dari monitor utama saya, tidak peduli di mana mereka ketika saya menutupnya.

Orang lain akan selalu memulai di sekunder pantau, tidak peduli di mana mereka ketika saya menutupnya.

Apakah ada pengaturan registri yang terkubur di suatu tempat, yang dapat saya manipulasi untuk mengontrol aplikasi monitor mana yang diluncurkan secara default?

@rp: Saya memiliki Ultramon, dan saya setuju bahwa itu sangat diperlukan, sampai-sampai Microsoft harus membelinya dan memasukkannya ke dalam OS mereka. Tapi seperti yang Anda katakan, itu tidak membiarkan Anda mengontrol monitor default yang diluncurkan program.


75
2017-09-09 19:54


asal


Jawaban:


Aplikasi Windows yang ditulis dengan benar yang ingin menyimpan lokasinya dari menjalankan untuk menjalankan akan menyimpan hasil GetWindowPlacement() sebelum mematikan, lalu gunakan SetWindowPlacement() saat startup untuk mengembalikan posisi mereka.

Seringkali, aplikasi akan menyimpan hasil GetWindowPlacement() dalam registri sebagai REG_BINARY untuk mudah digunakan.

Itu WINDOWPLACEMENTrute memiliki banyak kelebihan dibandingkan metode lain:

  • Menangani kasus di mana resolusi layar berubah sejak run terakhir: SetWindowPlacement() secara otomatis akan memastikan bahwa jendela tidak sepenuhnya offscreen
  • Menyimpan keadaan (diminimalkan / dimaksimalkan) tetapi juga menyimpan ukuran dan posisi yang dikembalikan (normal)
  • Menangani metrik desktop dengan benar, mengkompensasi posisi bilah tugas, dll. (Mis. Menggunakan "koordinat ruang kerja" bukan "koordinat layar" - teknik yang mengandalkan penghematan koordinat layar mungkin mengalami masalah "jendela berjalan" tempat jendela akan selalu muncul sedikit lebih rendah setiap kali jika pengguna memiliki toolbar di bagian atas layar).

Akhirnya, program yang menangani restorasi jendela dengan benar akan mempertimbangkan nCmdShow parameter diteruskan dari shell. Parameter ini diatur dalam shortcut yang meluncurkan aplikasi (Normal, Minimalisasi, Maksimalkan):

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

Untuk aplikasi non-Win32, penting untuk memastikan bahwa metode yang Anda gunakan untuk menyimpan / mengembalikan posisi jendela akhirnya menggunakan panggilan dasar yang sama, jika tidak (seperti Java Swing's setBounds()/getBounds() masalah) Anda akan berakhir dengan menulis banyak kode tambahan untuk menerapkan kembali fungsi yang sudah ada di WINDOWPLACEMENT fungsi.


41
2017-09-09 23:56



Inilah yang saya temukan. Jika Anda ingin aplikasi dibuka di monitor sekunder Anda secara default, lakukan hal berikut:

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.

Aplikasi sekarang akan terbuka di monitor ini secara default. Jika Anda ingin mengubahnya ke monitor lain, ikuti saja langkah 1-6 lagi.


55
2018-02-04 15:05



Dapatkan UltraMon. Segera.

http://realtimesoft.com/ultramon/ 

Ini tidak membiarkan Anda menentukan apa yang memantau aplikasi dimulai, tetapi memungkinkan Anda memindahkan aplikasi ke monitor lain, dan menjaga rasio aspeknya tetap utuh, dengan satu klik mouse. Ini adalah utilitas yang sangat berguna.

Sebagian besar program akan dimulai dari tempat terakhir Anda meninggalkannya. Jadi jika Anda memiliki dua monitor di kantor, tetapi hanya satu di rumah, Anda dapat memulai laptop di rumah dan tidak melihat aplikasi yang berjalan di monitor lain (yang sekarang tidak ada). UltrMon juga memungkinkan Anda memindahkan aplikasi yatim tersebut kembali ke layar utama dengan cepat dan mudah.


10
2017-09-09 20:11



Ini bukan jawaban untuk pertanyaan ini tapi saya berurusan dengan masalah ini dengan Shift + Win + [left,right] arrow keys jalan pintas. Anda dapat memindahkan jendela yang sedang aktif ke monitor lain dengannya.


9
2017-09-18 09:42



Saya cukup yakin monitor utama adalah default. Jika aplikasi dikodekan dengan sopan, ketika itu ditutup, itu akan mengingat di mana itu terakhir dan akan dibuka kembali di sana, tetapi - seperti yang Anda perhatikan - itu bukan perilaku default.

EDIT: Cara yang biasanya saya lakukan adalah memiliki lokasi yang disimpan dalam pengaturan aplikasi. Saat dimuat, jika tidak ada nilai untuknya, default ke pusat layar. Pada penutupan formulir, ia mencatat posisinya. Dengan begitu, kapan pun terbuka, itu tempat terakhir. Saya tidak tahu cara sederhana untuk mengatakannya untuk meluncurkan ke monitor kedua pertama kalinya secara otomatis, namun.

- Kevin Fairchild


4
2017-09-09 20:04



Catatan penting: Jika Anda ingat posisi aplikasi Anda dan shutdown dan kemudian mulai lagi di posisi itu, perlu diingat bahwa konfigurasi monitor pengguna mungkin telah berubah ketika aplikasi Anda ditutup.

Pengguna laptop, misalnya, sering mengubah konfigurasi tampilan mereka. Saat berlabuh, mungkin ada monitor kedua yang menghilang saat tidak dicopot. Jika pengguna menutup aplikasi yang sedang berjalan pada monitor kedua dan membuka kembali aplikasi ketika monitor diputuskan, mengembalikan jendela ke koordinat sebelumnya akan membuatnya benar-benar mati.

Untuk mengetahui seberapa besar tampilan sebenarnya, lihat GetSystemMetrics.


3
2017-09-16 15:55



Jadi saya punya masalah ini dengan Adobe Reader 9.0. Entah bagaimana program ini lupa untuk membuka di monitor kanan saya dan secara konsisten membuka di monitor kiri saya. Sebagian besar program memungkinkan Anda untuk menyeretnya, memaksimalkan layar, dan kemudian menutupnya dan itu akan diingat. Nah, dengan Adobe, saya harus menyeretnya dan menutupnya sebelum memaksimalkannya, agar Windows dapat mengingat layar mana yang akan dibuka di lain waktu. Setelah Anda mengaturnya ke monitor yang benar, maka Anda dapat memaksimalkannya. Saya pikir ini bodoh, karena hampir semua program windows mengingatnya secara otomatis tanpa mencoba membuat jalan bagi XP untuk mengingatnya.


2
2018-03-31 20:27



Jadi saya setuju ada beberapa aplikasi yang dapat Anda konfigurasikan untuk dibuka di satu layar dengan memaksimalkan atau mengklik kanan dan layar bergerak / sizing, kemudian tutup dan buka kembali. Namun, ada yang lain yang hanya akan terbuka di layar utama.

Apa yang telah saya lakukan untuk menyelesaikan: atur monitor yang Anda inginkan agar aplikasi keras kepala tetap terbuka, seperti monitor 1 dan monitor Anda yang lain sebagai 2, kemudian ubah monitor 2 Anda menjadi yang utama - jadi pengaturan desktop dan bilah start Anda tetap ada. Semoga ini membantu.


1
2018-06-07 18:17



Jangan pegang saya untuk ini tetapi saya cukup yakin itu tergantung pada aplikasi itu sendiri. Saya tahu banyak yang selalu terbuka di monitor utama, beberapa akan dibuka kembali ke monitor yang sama yang sebelumnya dijalankan, dan beberapa yang dapat Anda atur. Saya tahu misalnya saya memiliki pintas untuk membuka jendela perintah ke direktori tertentu, dan masing-masing memiliki opsi di properti mereka ke lokasi untuk membuka jendela. Sementara Outlook hanya ingat dan terbuka di layar terakhir terbuka. Lalu aplikasi lain terbuka di jendela apa pun yang menjadi fokus saat ini.

Jadi saya tidak yakin ada cara untuk memberi tahu setiap program di mana harus dibuka. Semoga itu bisa membantu.


0
2017-09-09 20:05