Soru Uygulamamın izlediği monitörü belirleyen nedir?


Windows kullanıyorum ve iki monitörüm var.

Bazı uygulamalar olacak her zaman birincil monitörüme başla, onları kapattığımda nerede olursak ol.

Diğerleri her zaman başlayacak ikincil Monitör, onları kapattığımda nerede olurlarsa olsunlar.

Hangi monitör uygulamalarının varsayılan olarak başlatıldığını kontrol etmek için kullanabileceğim bir yere gömülmüş bir kayıt defteri ayarı var mı?

@rp: Ultramon'um var ve Microsoft'un satın alması ve işletim sistemlerine dahil etmesi gerektiği için bunun vazgeçilmez olduğunu kabul ediyorum. Ama dediğiniz gibi, bir programın başlattığı varsayılan monitörü kontrol etmenize izin vermez.


75
2017-09-09 19:54


Menşei


Ultramon sahip olması gereken bir yardımcı programdır. Yıllardır kullanıyorum. - AMissico
Bu yüksek trafikli soru, Ultramon için bir reklam gibi görünmeye başlıyor. DisplayFusion da belirtilmelidir. Ben şirket ile ilişkili değilim, sadece ürünün benim için ne yaptığını seviyorum. İyi bilinen üçüncü bir "Gerçek Birden Çok Monitör" - zx81
@ zx81: '08'de bunu yazdığımda Windows xp'im vardı. UltraMon o zaman kullanışlıdır, ancak daha yeni Windows sürümlerinde bunun için kefil olamaz. - JosephStyons


Cevaplar:


Çalışmaktan çalıştırılmak üzere konumlarını kaydetmek isteyen doğru yazılmış Windows uygulamaları, GetWindowPlacement() kapatmadan önce kullanın SetWindowPlacement() başlangıçta pozisyonlarını geri yüklemek için.

Sıklıkla, uygulamalar sonuçlarını saklar GetWindowPlacement() kayıt olarak REG_BINARY kolay kullanım için.

WINDOWPLACEMENTrotanın diğer yöntemlere göre birçok avantajı vardır:

  • Son çalışmadan bu yana ekran çözünürlüğünün değiştiği durumu ele alır: SetWindowPlacement() Pencerenin tamamen ekran dışında olmadığını otomatik olarak garanti eder
  • Durumu (minimize edilmiş / maksimize edilmiş) kaydeder, fakat aynı zamanda geri yüklenen (normal) boyut ve konumunu da kaydeder.
  • Masaüstü metriklerini doğru bir şekilde kullanır, görev çubuğu konumunu vb. Telafi eder (örneğin "ekran koordinatları" yerine "çalışma alanı koordinatlarını kullanır") - ekran koordinatlarına dayanan teknikler, bir pencerenin her zaman görüneceği "yürüme pencereleri" sorunundan muzdarip olabilir Kullanıcının ekranın üstünde bir araç çubuğu varsa, her seferinde biraz daha düşük.

Son olarak, pencere restorasyonunu doğru şekilde ele alan programlar dikkate alınacaktır. nCmdShow parametresi kabuktan geçirilir. Bu parametre, uygulamayı başlatan kısayolda ayarlanır (Normal, Küçültülmüş, Büyüt):

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

Win32 dışındaki uygulamalar için, pencere konumunu kaydetmek / geri yüklemek için kullandığınız yöntemin, temelde aynı temel çağrıyı kullandığından emin olmanız önemlidir (Java Swing gibi). setBounds()/getBounds() problemi) orada zaten var olan işlevselliği yeniden uygulamak için çok fazla kod yazacaksınız. WINDOWPLACEMENT fonksiyonlar.


41
2017-09-09 23:56



İyi cevap için teşekkürler. Bu bilgiyi kullanarak, en azından, istediğim takdirde, bazı programları belirli bir yerde başlatmak için elle ayarlayabilirim. - JosephStyons
SetWindowPlacement () 'ın, bu konumun gerçekten var olup olmadığını kontrol etmesi gerektiğini de belirtmek gerekir. Yaygın bir senaryo, bir dizüstü bilgisayarı çift monitöre bağlıyken uyutmak ve daha sonra sadece bir tanesiyle uyandırmaktır; bu durumda sanal ekran alanı önemli ölçüde daha küçüktür. - JosephStyons


İşte bulduğum şey. Bir uygulamayı ikincil monitörünüzde açmak istediğinizde, aşağıdakileri yapın:

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.

Uygulama varsayılan olarak bu monitörde açılacaktır. Başka bir monitöre değiştirmek isterseniz, tekrar 1-6 arasındaki adımları izleyin.


55
2018-02-04 15:05



Teşekkürler bu gerçekten işe yarıyor. Bir yorum eklemek istediğim, eğer uygulama bir program tarafından başlatılmışsa, örneğin IE'yi başlatmak için, iexplore'ı başlatmanız ve TryingToHelp'in listelenen şeyleri takip etmeniz gerekir. işe yarıyor. Benim durumumda, IE'yi belirli bir url ile parametre olarak başlatan bir görev programım var. Görev zamanlayıcısı tarafından başlatılan bu IE'yi yeniden boyutlandırma ve taşıma yardımcı olmadı. - yantaq
Maalesef Win7'de benim için çalışmıyor. 1-5 arasındaki adımlar işe yarar ve en üst düzeye çıkmazsam, program (TeXstudio) uygun monitörde başlar. En üst düzeye çıkar ve kapatır kapatmaz, diğer ekranda bir sonraki başlatma gerçekleşir. - Maxim.K
Bunu bazı uygulamalar için çalışmaya başlayabilirim, ancak Windows 10 PowerShell'de her zaman dizüstü bilgisayarımın ekranında başlamasını istediğim harici monitörde başlamıyorum. - Nate
Follwing sözünü ekleyeyim: Benim durumumda, bir .PDF dosyasına çift tıkladığımda bu işe yaramadı. Sonra bunu öğrendim. İlişkili bir dosyaya çift tıklamak yerine uygulamayı gerçekten açmak bir fark yaratır. Bu durumda, başlangıç ​​menüsü aracılığıyla Adobe Acrobat'ı açın, ardından anlattığınız adımları yapın (yani pencereyi istenen monitöre taşıyın, sonra kapatın), iyi çalıştı. Ayrıca, uygulama penceresinin hedef ekrana tamamen uyduğundan ve kapatmadan önce 2. monitöre çakışmadığından emin olun. - Matt
Bu işe yaramıyor. BT, ayarları ve boku kaydetmeye yönelik APP GEREKTİRİR ve birçok uygulama uygun şekilde tasarlanmamıştır. Çok sinir bozucu ... ama hayatın bir parçası. - AbstractDissonance


UltraMon'u al. Hızlı bir şekilde.

http://realtimesoft.com/ultramon/ 

Bir uygulamanın hangi monitörde başladığını belirtmenize izin vermez, ancak bir uygulamayı başka bir monitöre taşımanıza ve en boy oranını tek bir fare tıklamasıyla sağlam tutmanıza olanak tanır. Bu çok kullanışlı bir yardımcı programdır.

Çoğu program, son bıraktığınız yerden başlar. Yani iş yerinde iki monitörünüz varsa, ancak evde yalnızca bir tane varsa, dizüstü bilgisayarınızı evde başlatmak ve diğer monitörde çalışan uygulamaları görmemek mümkündür (şu anda orada değil). UltrMon ayrıca bu yetim uygulamalarını hızlı ve kolay bir şekilde ana ekrana taşımanıza izin veriyor.


10
2017-09-09 20:11



UltraMon'u evde kullanıyorum ve çalışıyorum. İnsanların nasıl yaşadığını bilmiyorum, gerçekten. lol. Akıllı Görev Çubuğunu kullanırken bazen biraz lapa lapa olabilir, ama yeterince iyi ve sık sık onunla yapışmam için yeterli çalışır. - Kevin Fairchild - Kevin Fairchild
Ne kadar yapışkan bir site. 2009 insanlar! Ama ilginç ürün. Link için teşekkürler :) - nlaq
Şu andaki durumdayım - işyerinde çift monitöre sahip bir dizüstü bilgisayar, ama uzaktayken sadece küçük bir dizüstü bilgisayar ekranı. Bir uygulama görünür bir alanda yüklendiğinde şaşırtıcı derecede sinir bozucu - MS Outlook, en büyük suçlulardan biridir. Ultramon'un bir kopyasını alacağım ve umarım hayatı kolaylaştırır. Teşekkürler! - SqlRyan
Yazılımdan bahsedilecekse, 2015'te DisplayFusion listede yer almalıdır. Prefs / Window Locatoin'de, belirli uygulamaların nerede açılacağını belirtebilirsiniz. Listenin şu anda açık programlar tarafından doldurulmasını seviyorum, bu yüzden onlar için avlanmak zorunda değilsiniz. - zx81
Başka bir ekranda 'kapana kısılmış' olan uygulamaları taşımak için, uygulama odaktayken [win] + [ok] tuşlarını kullanın. Bu, uygulamayı ekrandan ekrana taşıyacaktır. Görüntüye gelince dur. Win 7+ üzerinde çalışıyor - Ceekay


Bu sorunun tam olarak cevabı değil ama ben bu problemle Shift + Win + [left,right] arrow keys kısayol. O anda aktif olan pencereyi başka bir monitöre taşıyabilirsiniz.


9
2017-09-18 09:42



Bu benim için çalıştı, ancak Shift tuşu olmaksızın, Win + [sol, sağ] - bir monitör ve eksik bir uygulama açılışı ile çalışırken bana yardımcı oldu! - Dazed
Önemli not: Bu tekniği kullanırsanız, pencereler geçerli pencere konumunu kaydetmez. Bunu elde etmek için pencereyi en az bir kez fare ile hareket ettirmeniz / yeniden boyutlandırmanız gerekir. - Tim Pohlmann


Birincil monitörün varsayılan olduğundan eminim. Uygulama düzgün bir şekilde kodlanmışsa, kapatıldığında, en son nerede olduğunu hatırlayacak ve orada yeniden açılacak, ancak - fark ettiğiniz gibi - bu varsayılan bir davranış değildir.

EDIT: Genelde yaptığım yol, uygulamanın ayarlarında saklanan konuma sahip olmaktır. Yükte, onlar için bir değer yoksa, varsayılan olarak ekranın ortasına gider. Formun kapatılması üzerine, pozisyonunu kaydeder. Böylece, ne zaman açılırsa, en son olduğu yer burası. Bununla birlikte, ikinci monitöre ilk kez otomatik olarak başlamasını söylemenin basit bir yolunu bilmiyorum.

- Kevin Fairchild


4
2017-09-09 20:04





Önemli not: Uygulamanızın konumunu ve kapatmayı hatırlar ve ardından bu konumda yeniden başlatırsanız, uygulamanız kapalıyken kullanıcının monitör yapılandırmasının değişmiş olabileceğini unutmayın.

Örneğin, dizüstü bilgisayar kullanıcıları ekran konfigürasyonlarını sık sık değiştirirler. Takıldığında, sökülürken kaybolan ikinci bir monitör olabilir. Kullanıcı 2. monitörde çalışan bir uygulamayı kapatırsa ve monitör bağlantısı kesildiğinde uygulamayı yeniden açarsa, pencereyi önceki koordinatlara geri yüklemek ekrandan tamamen çıkacaktır.

Ekranın gerçekten ne kadar büyük olduğunu anlamak için GetSystemMetrics'e göz atın.


3
2017-09-16 15:55





Bu yüzden Adobe Reader 9.0 ile bu sorunu yaşadım. Her nasılsa program sağ monitörümü açmayı unuttu ve sürekli olarak sol ekranımda açıldı. Çoğu program, ekranı sürüklemenizi, ekranı en üst düzeye çıkarmanızı ve daha sonra kapatmanızı sağlar ve hatırlar. Eh, Adobe ile, bir sonraki seferde hangi ekranın açılacağını hatırlatabilmek için onu en üst düzeye çıkarmadan önce sürüklemem ve kapatmam gerekiyordu. Doğru monitöre ayarladıktan sonra, bunu en üst düzeye çıkarabilirsiniz. Bence bu aptalca, çünkü neredeyse tüm windows programları, XP'nin hatırlaması için bir yol bulmadan otomatik olarak hatırlıyor.


2
2018-03-31 20:27



Soruyu gerçekten cevaplamadım, ama bana yardımcı oldu :) - D.N.


Bu yüzden, ekranın en üst düzeye çıkarılması, ekrana getirilmesi / boyutlandırılması, kapatılması ve yeniden açılmasıyla tek bir ekranda açılacak şekilde yapılandırılabileceğini düşündüğünüz bazı uygulamalar olduğunu kabul ediyorum. Ancak, sadece ana ekranda açılacak başkaları var.

Çözmek için ne yaptım: İnatçı uygulamaları tercih ettiğiniz monitörü monitör 1 ve diğer monitörünüzü 2 olarak ayarlayın, ardından monitörünüzü 2 birincil olacak şekilde değiştirin, böylece masaüstü ayarlarınız ve başlatma çubuğunuz kalsın. Bu yardımcı olur umarım.


1
2018-06-07 18:17