你如何控制应用程序打开在哪个显示器上?

25
作为一个使用双显示器的用户,我注意到应用程序在打开哪个显示器上(主显示器或副显示器,上次打开时的显示器等)方面表现不同。老实说,有些应用程序让我很烦恼,因为我希望它们在我的主显示器上打开,如果我想要它们在副显示器上,我会将它们移动到那里。然而,这些应用程序已经完成并且超出了我的控制范围,所以我想询问一下关于我的应用程序,可能会被使用双显示器的人运行。
有哪些控件可用于允许用户指定应用程序打开的显示器,允许应用程序“记住”关闭时所在的显示器并重新打开,以及强制应用程序在特定的显示器上启动?
我寻求跨所有操作系统和编程语言的解决方案,尽管我猜测不同的操作系统和语言将拥有不同的控件。
相关问题
- 是什么决定了我的应用程序在哪个显示器上运行? 这个问题讨论现有的应用程序以及它们如何决定在哪个显示器上运行。目前接受的答案提供了Windows函数,可用于控制应用程序在启动时的位置。 - 在第二个显示器上启动程序? 提供了一些Delphi解决方案,用于强制应用程序在特定的显示器上启动。

我找到了两个类似的问题,都是关于Windows方向的。然而,我对一般的可用性概念感兴趣,包括如何确定从哪里开始应用程序和跨平台(或任何非Windows)解决方案。 - Thomas Owens
5个回答

10
作为一个Windows程序员,我通过以下两种方式控制应用程序所创建的Windows启动显示器:
a.将我的应用程序的最后位置存储在注册表中并还原它;
b.如果没有存储信息,则将起始位置设置为魔术标记值,Windows使用其默认逻辑来定位应用程序。该默认逻辑因MS改进用户体验而从操作系统到操作系统不同,但往往确保应用程序将打开在用户最可能查看的那个监视器上。
作为一个在Windows XP/Vista多显示器系统下的用户,我会使用nVidia桌面管理器来设置应用程序启动时的位置,以便让不具有适当行为的应用程序能够正确显示。

我在其他问题中看到了关于注册表的评论。它似乎是一个常见的地方,但我不确定注册表是否适合这个。但它似乎是一种常见的做法,所以这是需要考虑的事情。 - Thomas Owens
注册表,或者一个 .ini 或 .config 类型的文件。 - Chris Becke
1
我在Windows 7上使用RSA SecureID时遇到了类似的问题。当我更改了显示器配置后,该应用程序会在不存在的显示器上打开,直到我清除了hkcu \ software \ rsa \ software token \ desktop中的xpos和ypos设置。感谢您的提示。 - ewilan

2

从传统的Unix和Linux窗口管理器的角度来看,你无法控制窗口的位置。窗口管理器处理窗口的定位。

你可能能够向窗口管理器提供提示,但是配置窗口管理器忽略这些提示也是可能的。在使用大型虚拟桌面时,从程序中移动或放置窗口很容易引起疼痛。

参见:http://standards.freedesktop.org/wm-spec/wm-spec-latest.html


有没有办法告诉窗口管理器在哪里或如何打开你的应用程序?我以前从未在Unix或Linux上进行过GUI编程。 - Thomas Owens

2

需要考虑的一件事是,在应用程序调用之间,监视器配置可能已更改(例如,在笔记本电脑上运行,有时可能会停靠并使用外部监视器)。确保您的应用程序位于可见范围内。

至于 API,则有 System.Windows.Forms.Screen 类可提供一些信息。


0
在KDE 4.13.3中(也许在某些旧版本和新版本中也可以这样做(翻译可能不太准确-我使用波兰语版本):
  1. 运行所需的程序
  2. 右键单击其标题栏
  3. 选择“更多操作” ->“附加窗口设置…”(更多选项可在“附加程序设置…”下找到)
  4. 转到“大小&布局”选项卡
  5. 勾选“屏幕”复选框,选择“强制”并选择屏幕编号。该程序的窗口将始终在该屏幕上打开。

-1

遇到了类似的问题。找到了以下解决方法:

右键单击窗口标题栏,选择“更多操作” ->“窗口管理器设置”。在左侧的列中选择“焦点”。切换选项“活动屏幕跟随鼠标”。

如果没有指定其他默认值,则窗口将出现在当前活动屏幕上。 通过上述过程,鼠标位置定义了此活动屏幕。

希望这可以帮助您,

最好,Bb


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接