У меня ноутбук с Windows 7, подключенный к двум дополнительным мониторам. Чтобы расширить панель задач на эти дополнительные мониторы (в отличие от Win10, у Win7 нет этой способности изначально), я использую программу под названием 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