我正在使用Windows,我有两台显示器。
有些应用程序将始终在我的主显示器上启动,无论我关闭它们的位置。
其他人总是会在辅助监视器上启动,无论他们关闭它们的位置。
是否存在一个隐藏在某个地方的注册表设置,我可以操作它来控制默认情况下启动哪些监视器应用程序?
@rp:我有Ultramon,我同意它是不可或缺的,微软应该购买并将其整合到他们的操作系统中。但正如你所说,它不会让你控制程序启动的默认监视器。
答案 0 :(得分:55)
这是我发现的。如果您希望默认情况下在辅助监视器上打开应用程序,请执行以下操作:
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 :(得分:44)
正确编写的Windows应用程序希望在运行之前保存其位置,在关闭之前会保存GetWindowPlacement()
的结果,然后在启动时使用SetWindowPlacement()
来恢复其位置。
应用程序通常会将GetWindowPlacement()
的结果作为REG_BINARY
存储在注册表中,以方便使用。
WINDOWPLACEMENT
路线比其他方法有许多优点:
SetWindowPlacement()
将自动确保窗口不完全在屏幕外最后,正确处理窗口恢复的程序将考虑从shell传入的nCmdShow
参数。此参数在启动应用程序的快捷方式中设置(正常,最小化,最大化):
if(nCmdShow != SW_SHOWNORMAL)
placement.showCmd = nCmdShow; //allow shortcut to override
对于非Win32应用程序,确保用于保存/恢复窗口位置的方法最终使用相同的底层调用非常重要,否则(如Java Swing的setBounds()
/ getBounds()
问题)你最终会编写大量额外的代码来重新实现WINDOWPLACEMENT
函数中已有的功能。
答案 2 :(得分:10)
获取UltraMon。很快。
http://realtimesoft.com/ultramon/
它不允许您指定应用程序启动的监视器,但它允许您将应用程序移动到另一个监视器,并通过单击鼠标保持其宽高比完好无损。这是一个非常方便的实用程序。
大多数程序都会从您上次离开的地方开始。因此,如果您有两台显示器正在工作,但只有一台在家,则可以在家中启动笔记本电脑而不会看到其他显示器上运行的应用程序(现在不在那里)。 UltrMon还允许您快速轻松地将这些孤立应用程序移回主屏幕。
答案 3 :(得分:9)
这不是这个问题的答案,但我用Shift + Win + [left,right] arrow keys
快捷方式处理了这个问题。您可以使用它将当前活动的窗口移动到另一个监视器。
答案 4 :(得分:4)
我很确定主监视器是默认监视器。如果应用程序编码得体,当它关闭时,它会记住它的最后位置并将在那里重新打开,但是 - 正如您所注意到的 - 它不是默认行为。
编辑:我通常这样做的方法是将位置存储在应用程序的设置中。加载时,如果没有值,则默认为屏幕中心。在结束表格时,它会记录其位置。这样,无论何时打开,它都是最后一次。但是,我不知道有一种简单的方法告诉它第一次自动启动到第二台显示器上。
- Kevin Fairchild
答案 5 :(得分:3)
重要提示:如果您记住应用程序的位置并关闭,然后再在该位置重新启动,请记住,在您的应用程序关闭时,用户的显示器配置可能已更改。
例如,笔记本电脑用户经常更改其显示配置。停靠时可能会有第二台显示器在取消停靠时消失。如果用户关闭在第二台显示器上运行的应用程序并在显示器断开连接时重新打开应用程序,则将窗口恢复到之前的坐标将使其完全脱离屏幕。
要了解显示器的实际大小,请查看GetSystemMetrics。
答案 6 :(得分:2)
所以我在Adobe Reader 9.0中遇到了这个问题。不知怎的,程序忘了在我的右侧显示器上打开,并且一直在我的左侧显示器上打开。大多数程序允许你拖动它,最大化屏幕,然后关闭它,它会记住。好吧,使用Adobe,我必须将其拖动然后在最大化之前关闭它,以便Windows记住下一次打开它的屏幕。一旦将其设置为正确的监视器,您就可以最大化它。我认为这是愚蠢的,因为几乎所有的Windows程序都会自动记住它而不试图为XP记住方法。
答案 7 :(得分:1)
所以我同意有些应用程序可以通过最大化或右键单击并移动/调整屏幕,然后关闭并重新打开,在一个屏幕上打开。但是,还有其他只会在主屏幕上打开。
我已经做了解决的事情:设置显示器,你更喜欢顽固的应用程序打开,作为监视器1和你的另一台显示器为2,然后将您的显示器2更改为主要 - 所以您的桌面设置和开始栏依然存在。希望这可以帮助。
答案 8 :(得分:0)
不要抱我这个,但我很确定这取决于它自己的应用程序。我知道许多人总是在主显示器上打开,有些人会重新打开他们之前运行的同一台显示器,有些你可以设置。我知道例如我有快捷方式打开命令窗口到特定目录,每个都有一个选项在他们的属性中打开窗口的位置。虽然Outlook只记得并打开在最后一个屏幕,它打开。然后其他应用程序在当前焦点所在的窗口中打开。
所以我不确定是否有办法告诉每个程序在哪里打开。希望有所帮助。
答案 9 :(得分:0)
我注意到,如果我在桌面上放置一个快捷方式,那么启动的应用程序可能会出现在该屏幕上( if 该应用不会重新定位自己)。
这也适用于从Windows资源管理器运行 - 如果资源管理器位于一个屏幕上,则启动的应用程序将选择要使用的监视器。
再次 - 我认为这是启动应用程序指定默认(Windows托管)位置的时间。大多数应用程序似乎都以某种方式覆盖了这种默认行为。
如此创建的简单窗口将执行此操作:
hWnd = CreateWindow(windowClass,windowTitle,WS_VISIBLE | WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,SW_SHOW,CW_USEDEFAULT,0,NULL,NULL,hInst,NULL);
答案 10 :(得分:-3)
右键单击快捷方式并选择属性。 确保您在“快捷方式”选项卡上。 选择RUN下拉框并将其更改为Maximized。
这可能有助于在主监视器上全屏启动程序。