我有一台Windows 7笔记本电脑连接到两台额外的显示器。为了将任务栏扩展到这些额外的监视器(Win7本身不具备此功能,与Win10不同),我使用名为DualMonitor.exe
的程序。
我的问题是,当我从这些额外的显示器断开笔记本电脑时,由DualMonitor
管理的程序将被隐藏。为了解决这个问题,我制作了一个简单的批处理文件来重新启动explorer
和DualMonitor
。
@echo off
taskkill /f /im dualmonitor.exe
ping localhost -n 1 > nul
taskkill /f /im explorer.exe
ping localhost -n 3 > nul
echo.
echo restarting explorer
start explorer.exe
ping localhost -n 6 > nul
echo restarting dual monitor
start "" "C:\Users\X\AppData\Local\Dual Monitor\DualMonitor.exe"
上面的批处理工作正常,但我想调整它,以便在连接额外的监视器的情况下它只打开DualMonitor
。我做了一些研究,发现这些命令可以修改为计算连接到笔记本电脑的其他监视器的数量:
wmic desktopmonitor get screenwidth, screenheight
wmic path Win32_VideoController get CurrentHorizontalResolution, CurrentVerticalResolution
...但对我来说,这些只会返回笔记本电脑显示器的分辨率,尽管连接到另外两台显示器。我没有此计算机的管理员权限,因此我无法在我的解决方案中使用dxdiag
。
最终结果
@echo off
taskkill /f /im dualmonitor.exe
ping localhost -n 1 > nul
taskkill /f /im explorer.exe
ping localhost -n 3 > nul
echo.
echo restarting explorer
start explorer.exe
ping localhost -n 3 > nul
for /F %%M in ('
wmic path Win32_PnPEntity where "Service='monitor' and Status='OK'" get DeviceID /VALUE ^
^| find /C "="
') do set count=%%M
if %count% GTR 1 (
echo restarting dual monitor.
start "" "C:\Users\X\AppData\Local\Dual Monitor\DualMonitor.exe"
ping localhost -n 4 > nul
)
echo.
echo all done.
ping localhost -n 2 > nul
答案 0 :(得分:1)
要确定连接的监视器数量,可以使用以下代码:
for /F %%M in ('
wmic path Win32_PnPEntity where "Service='monitor' and Status='OK'" get DeviceID /VALUE ^
^| find /C "="
') do echo There are %%M monitors.
请参阅文章Win32_PnPEntity class了解WMI类Win32_PnPEntity
。
答案 1 :(得分:0)
像你一样使用predict_proba
,但只选择一个属性并计算出现的次数:
wmic