Python:在特定屏幕上打开进程

0 投票
1 回答
1145 浏览
提问于 2025-04-16 23:37

我写了一个脚本,让我登录电脑时自动打开4个IE窗口。我试过用webbrowser模块,但它会把4个链接都放在一个IE窗口里,变成了多个标签页。我没法让webbrowser打开4个不同的窗口,所以我用了subprocess.Popen。

我有4个显示器,想让每个IE窗口自动在对应的屏幕上启动。现在我只能让这4个窗口在主屏幕上重叠打开。我该怎么做才能实现这个呢?我上网查了很多资料,但找不到关于如何在特定尺寸或特定屏幕上打开程序的信息……这是我的脚本:

import subprocess

subprocess.Popen('"C:\\Program Files\\Internet Explorer\\iexplore.exe" hxxps://myserver.com/Orion/SummaryView.aspx?viewid=1')

subprocess.Popen('"C:\\Program Files\\Internet Explorer\\iexplore.exe" hxxp://myserver2.com:8080/WOListView.do')

subprocess.Popen('"C:\\Program Files\\Internet Explorer\\iexplore.exe" hxxp://myserver3.com:8888/stats/cgi?sid=301960859109&area=stats&action=noc&id=22689236889&page=22&sel=tab_listview_sel_22689236889')

subprocess.Popen('"C:\\Program Files\\Internet Explorer\\iexplore.exe" hxxps://mymail.com/owa/')

1 个回答

1

我怀疑你仅靠Python自带的跨平台功能是做不到这一点的。通过使用Windows的API,你可以指定应用程序窗口的起始位置和大小,这些信息通过STARTUPINFO结构中的dwXdwYdwXSizedwYSize来传递给CreateProcess函数。网上可能有一些使用CreateProcess和Python的ctypes外部函数接口的例子。多显示器的设置实际上提供了一个大的虚拟桌面,坐标系统是连续的,所以通过设置这些参数,你可以让每个窗口出现在不同的显示器上。再说一次,你需要Windows的API来确定每个显示器在这个大虚拟屏幕空间中的坐标,具体来说就是EnumDisplayMonitorsGetMonitorInfo这两个函数。或者,因为你可能不会在其他机器上使用这个功能,你也可以通过实验来确定屏幕的偏移量,然后把这些值写死在代码里。

撰写回答