내 앱이 실행되는 모니터를 결정하는 것은 무엇입니까?


78

Windows를 사용하고 있고 두 대의 모니터가 있습니다.

일부 응용 프로그램은 닫았을 때 어디에 있든 상관없이 항상 기본 모니터에서 시작됩니다.

다른 모니터는 내가 닫았을 때 어디에 있든 상관없이 항상 보조 모니터에서 시작됩니다 .

기본적으로 실행되는 모니터 응용 프로그램을 제어하기 위해 조작 할 수있는 레지스트리 설정이 어딘가에 묻혀 있습니까?

@rp : 저는 Ultramon을 가지고 있으며 Microsoft가 그것을 구입하고 OS에 통합해야 할 때까지 Ultramon이 필수적이라는 데 동의합니다. 그러나 말했듯이 프로그램이 시작되는 기본 모니터를 제어 할 수 없습니다.


2
Ultramon은 필수 유틸리티입니다. 나는 몇 년 동안 그것을 사용하고 있습니다.
AMissico

트래픽이 많은이 질문은 Ultramon의 광고처럼 보이기 시작했습니다. DisplayFusion도 언급해야합니다. 나는 회사와 관련이 없으며 제품이 나를 위해하는 일을 좋아합니다. 세 번째로 잘 알려진 "실제 다중 모니터"
zx81

1
@ zx81 : 2008 년에이 글을 썼을 때 Windows xp가있었습니다. UltraMon은 유용했지만 최신 버전의 Windows에서는 보증 할 수 없습니다.
JosephStyons 2015-06-29

답변:


45

실행될 때마다 위치를 저장하려는 올바르게 작성된 Windows 앱은 GetWindowPlacement()종료 전의 결과를 저장 한 다음 SetWindowPlacement()시작시 사용 하여 위치를 복원합니다.

종종 앱은 쉽게 사용할 수 있도록 GetWindowPlacement()레지스트리에 결과를 저장합니다 REG_BINARY.

WINDOWPLACEMENT경로는 다른 방법에 비해 많은 이점이 있습니다.

  • 핸들 화면 해상도가 마지막으로 실행 된 이후 변경된 경우 : SetWindowPlacement()자동으로 윈도우가 완전히 오프 스크린되지 않도록한다
  • 상태 (최소화 / 최대화)를 저장하지만 복원 된 (일반) 크기 및 위치도 저장합니다.
  • 데스크탑 메트릭을 올바르게 처리하고 작업 표시 줄 위치 등을 보정합니다 (예 : "화면 좌표"대신 "작업 공간 좌표"사용-화면 좌표 저장에 의존하는 기술은 창이 항상 나타나는 "보행 창"문제로 어려움을 겪을 수 있음) 사용자가 화면 상단에 도구 모음이있는 경우 매번 조금씩 낮 춥니 다).

마지막으로 창 복원을 적절하게 처리하는 프로그램 nCmdShow은 쉘에서 전달 된 매개 변수 를 고려합니다 . 이 매개 변수는 애플리케이션을 시작하는 바로 가기 (일반, 최소화, 최대화)에서 설정됩니다.

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

Win32가 아닌 응용 프로그램의 경우 창 위치를 저장 / 복원하는 데 사용하는 방법이 결국 동일한 기본 호출을 사용하는지 확인하는 것이 중요합니다. 그렇지 않으면 Java Swing의 setBounds()/ getBounds()문제 와 같이 많은 추가 코드를 작성하게됩니다. 기능에 이미있는 기능을 다시 구현 WINDOWPLACEMENT합니다.


좋은 답변에 감사드립니다. 이 정보를 사용하여 최소한 원하는 경우 특정 위치에서 실행되도록 일부 프로그램을 수동으로 설정할 수 있습니다.
JosephStyons

또한 SetWindowPlacement ()는 해당 위치가 실제로 존재하는지 확인해야합니다. 일반적인 시나리오는 듀얼 모니터에 연결된 상태에서 랩톱을 절전 모드로 전환 한 다음 나중에 하나만 사용하여 절전 모드로 전환하는 것입니다.이 경우 가상 화면 공간이 극적으로 작아집니다.
JosephStyons 2015 년

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 단계를 다시 따르십시오.


1
정말 감사합니다. 내가 추가하고 싶은 한 가지 코멘트는 프로그램에 의해 앱이 실행되는 경우 (예 : IE 실행) iexplore를 실행하고 TryingToHelp에 나열된 내용을 따라야한다는 것입니다. 효과가있다. 제 경우에는 주어진 URL을 매개 변수로 사용하여 IE를 시작하는 작업 예약 프로그램이 있습니다. 작업 스케줄러가 시작한이 IE의 크기를 조정하고 이동해도 도움이되지 않았습니다.
yantaq 2014

불행히도 Win7에서는 작동하지 않습니다. 1-5 단계는 작동하며 최대화하지 않으면 프로그램 (TeXstudio)이 적절한 모니터에서 시작됩니다. 최대화 한 다음 닫으면 다른 디스플레이에서 다음 시작이 발생합니다.
Maxim.K

일부 앱에서이 작업을 수행 할 수 있지만 Windows 10에서는 PowerShell이 ​​항상 내 노트북 ​​화면에서 시작되고 시작하려는 외부 모니터에서는 시작되지 않습니다.
Nate

1
다음 설명을 추가하겠습니다. 제 경우에는 .PDF 파일을 두 번 클릭해도 작동하지 않았습니다. 그런 다음 관련 파일을 두 번 클릭하지 않고 실제로 응용 프로그램을 여는 것이 차이가 있다는 것을 알았습니다 . 이 경우 시작 메뉴를 통해 Adobe Acrobat을 연 다음 설명 된 단계 (예 : 원하는 모니터로 창을 이동 한 다음 닫음)를 수행하면 제대로 작동했습니다. 또한 응용 프로그램 창을 대상 화면에 완전히 맞추고 닫기 전에 두 번째 모니터와 겹치지 않는지 확인하십시오.
Matt

1
이것은 작동하지 않습니다. 실제로 설정과 똥을 저장하려면 앱이 필요하며 많은 앱이 제대로 설계되지 않았습니다. 매우 짜증나지만 ... 삶의 일부.
AbstractDissonance

11

UltraMon을 받으세요. 빨리.

http://realtimesoft.com/ultramon/

앱이 시작되는 모니터를 지정할 수는 없지만 한 번의 마우스 클릭으로 앱을 다른 모니터로 이동하고 종횡비를 그대로 유지할 수 있습니다. 매우 편리한 유틸리티입니다.

대부분의 프로그램은 마지막으로 남겨둔 곳에서 시작됩니다. 따라서 직장에 두 대의 모니터가 있지만 집에 한 대만 있다면 집에서 노트북을 시작하고 다른 모니터 (현재는 존재하지 않음)에서 실행중인 앱을 볼 수 없습니다. UltrMon을 사용하면 고아 앱을 기본 화면으로 빠르고 쉽게 다시 이동할 수 있습니다.


집과 직장에서 UltraMon을 사용합니다. 사람들이 그것없이 어떻게 사는지 모르겠습니다. 롤. 스마트 작업 표시 줄을 사용할 때 때때로 약간 벗겨 질 수 있지만 잘 작동하고 자주 사용할 수 있습니다. -Kevin Fairchild
Kevin Fairchild

촌스러운 웹 사이트. 2009 년입니다! 하지만 흥미로운 제품입니다. 링크 주셔서 감사합니다 :)

저는이 상황에 처해 있습니다. 직장에서 듀얼 모니터가 도킹 된 노트북이지만, 외출 할 때는 노트북 화면이 조금만 있습니다. 응용 프로그램이 이전에 표시되던 영역에로드되면 놀랍게도 실망 스럽습니다. MS Outlook은 가장 큰 공격자 중 하나입니다. 나는 Ultramon의 사본을 얻을 것이고 그것이 삶을 조금 더 쉽게 만들어 주길 바랍니다. 감사!
SqlRyan 2009-06-17

소프트웨어가 언급 될 예정이라면 2015 년에는 DisplayFusion이 목록에 포함되어야합니다. Prefs / Window Locatoin에서 특정 앱이 열릴 위치를 지정할 수 있습니다. 목록이 현재 열려있는 프로그램으로 채워져 있기 때문에 그들을 찾을 필요가 없습니다.
zx81 2015-06-23

다른 화면에 '트랩'된 앱을 이동하려면 앱에 포커스가있을 때 [win] + [화살표]를 사용합니다. 이렇게하면 앱이 화면에서 화면으로 이동합니다. 시야에 들어 오면 중지하십시오. Win 7 이상에서 작동
Tim Schimandle

11

이 질문에 대한 답은 아니지만 Shift + Win + [left,right] arrow keys지름길 로이 문제를 다루었습니다 . 현재 활성 창을 다른 모니터로 이동할 수 있습니다.


이것은 나를 위해 일했지만 Shift 키가 없습니다. 즉, Win + [left, right]-하나의 모니터와 앱이 누락 된 상태에서 열 때 도움이되었습니다!
Dazed

중요 사항 :이 기술을 사용하면 창은 현재 창 위치를 저장하지 않습니다. 이를 위해서는 마우스로 적어도 한 번은 창을 이동 / 크기 조정해야합니다.
Tim Pohlmann

4

기본 모니터가 기본값이라고 확신합니다. 앱이 적절하게 코딩 된 경우 닫히면 마지막 위치를 기억하고 다시 열릴 것이지만, 아시다시피 기본 동작은 아닙니다.

편집 : 내가 일반적으로하는 방법은 앱의 설정에 위치를 저장하는 것입니다. 로드시 값이 없으면 기본적으로 화면 중앙이됩니다. 양식을 닫을 때 위치를 기록합니다. 이렇게하면 열릴 때마다 마지막 위치에 있습니다. 그러나 처음에 두 번째 모니터에서 자동으로 실행되도록하는 간단한 방법을 모르겠습니다.

-케빈 페어차일드


3

중요 참고 사항 : 응용 프로그램의 위치를 ​​기억하고 종료 한 다음 해당 위치에서 다시 시작하는 경우 응용 프로그램이 닫힌 동안 사용자의 모니터 구성이 변경되었을 수 있습니다.

예를 들어 노트북 사용자는 디스플레이 구성을 자주 변경합니다. 도킹되면 도킹 해제시 사라지는 두 번째 모니터가있을 수 있습니다. 사용자가 두 번째 모니터에서 실행 중이던 응용 프로그램을 닫고 모니터 연결이 끊어졌을 때 응용 프로그램을 다시 열면 창을 이전 좌표로 복원하면 화면이 완전히 사라집니다.

디스플레이가 실제로 얼마나 큰지 알아 보려면 GetSystemMetrics를 확인하십시오.


2

그래서 Adobe Reader 9.0에서이 문제가 발생했습니다. 어떻게 든 프로그램이 내 오른쪽 모니터에서 열리는 것을 잊고 왼쪽 모니터에서 일관되게 열렸습니다. 대부분의 프로그램을 사용하면 드래그하여 화면을 최대화 한 다음 닫을 수 있습니다. 음, Adobe를 사용하면 Windows가 다음에 열 화면을 기억하기 위해이를 최대화하기 전에 드래그 한 다음 닫아야했습니다. 올바른 모니터로 설정하면 최대화 할 수 있습니다. 거의 모든 Windows 프로그램이 XP가 기억할 방법을 조작하지 않고 자동으로 기억하기 때문에 이것은 어리석은 일이라고 생각합니다.


질문에 실제로 대답하지는 않았지만 도움이되었습니다. :)
DN

1

따라서 화면을 최대화하거나 마우스 오른쪽 버튼으로 클릭하고 이동 / 크기 조정하여 한 화면에서 열도록 구성한 다음 닫았다가 다시 열도록 구성 할 수있는 앱이 있다는 데 동의합니다. 그러나 메인 화면에서만 열리는 다른 것들이 있습니다.

해결을 위해 내가 한 일 : 완고한 앱을 열기를 선호하는 모니터를 모니터 1로 설정하고 다른 모니터를 2로 설정 한 다음 모니터 2를 기본으로 변경하여 데스크탑 설정과 시작 표시 줄을 유지하십시오. 도움이 되었기를 바랍니다.


0

저를 붙 잡지 마십시오. 그러나 나는 그것이 응용 프로그램 자체에 달려 있다고 확신합니다. 나는 많은 사람들이 항상 메인 모니터에서 열려 있다는 것을 알고 있으며, 일부는 이전에 실행되었던 동일한 모니터로 다시 열리고 일부는 설정할 수 있습니다. 예를 들어 특정 디렉터리에 대한 명령 창을 열 수있는 바로 가기가 있고 각 디렉터리에는 해당 속성에 창을 열 위치에 대한 옵션이 있습니다. Outlook은 마지막으로 열린 화면을 기억하고 엽니 다. 그런 다음 다른 앱 현재 포커스가있는 창에서 엽니 다.

따라서 모든 프로그램을 열어야 할 위치를 알려주는 방법이 있는지 모르겠습니다. 희망이 있습니다.


0

한 화면의 바탕 화면에 바로 가기를 넣으면 시작된 응용 프로그램이 해당 화면에 나타날 수 있습니다 ( 해당 앱이 자체 위치를 변경하지 않는 경우 ).

이는 Windows 탐색기에서 실행하는 작업에도 적용됩니다. 탐색기가 한 화면에있는 경우 시작된 응용 프로그램은 사용할 모니터를 선택합니다.

다시 말하지만 이것은 시작 응용 프로그램이 기본 (Windows 관리) 위치를 지정하는 경우라고 생각합니다. 대부분의 응용 프로그램은 어떤 방식 으로든이 기본 동작을 무시하는 것 같습니다.

이렇게 만든 간단한 창은 다음을 수행합니다.

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


-3

바로 가기를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택합니다. "바로 가기"탭에 있는지 확인하십시오. RUN 드롭 다운 상자를 선택하고 최대화로 변경합니다.

이렇게하면 기본 모니터에서 전체 화면으로 프로그램을 시작하는 데 도움이 될 수 있습니다.


3
이것은 실제로 질문에 대한 답이 아닙니다. 이것은 오래된 질문입니다.
Ajean 2014
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.