[Win7/.BAT] MultiMonitorTool.exe /enable werkt niet altijd

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Polbeer91
  • Registratie: Juli 2009
  • Laatst online: 11-08 13:00
offtopic:
Weet niet honderd procent zeker dat dit topic toch niet in CSA moet, maar in Waar hoort mijn topic? staat over CSA: "Het subforum waar je vragen kan stellen over kant en klare clientprogramma's en -scripts" en aangezien dit geen kant en klaar script is denk ik dat die hier goed zit.

Beste tweakers,

Ik heb sinds kort mijn TV aan de andere kant van de kamer via HDMI aangesloten op m'n pc. Ook staan hier 2 monitoren aan gekoppeld.

Nu wil ik graag met één druk op de knop kunnen wisselen tussen de volgende 2 situaties:
- De TV staat aan, audio gaat via HDMI naar TV en de twee monitoren op het bureau staan uit.
- De TV staat uit, audio gaat naar pc speakers, en de twee monitoren op het bureaus staan aan.
- (Alle monitoren staan aan, audio naar speakers, nu voor te testen wel handig, staks niet nodig)

Na flink wat googelen ben ik uitgekomen op NirCmd en MultiMonitorTool, bijden van Nirsoft

Ik heb de volgende scripts geschreven:

Voor de gebruikte commando's, zie:
http://www.nirsoft.net/utils/multi_monitor_tool.html
http://nircmd.nirsoft.net/setdisplay.html
http://nircmd.nirsoft.net/setdefaultsounddevice.html

De schermen in kwestie zijn:
- 'Main' monitor, is normaliter primary: MONITOR\DELA07A\{4d36e96e-e325-11ce-bfc1-08002be10318}\0009 (aangesloten via DVI)
- 'Side' monitor, is nooit primary MONITOR\IVM5398\{4d36e96e-e325-11ce-bfc1-08002be10318}\0008 (Aangesloten via VGA->DVI)
- TV, is primary als output alleen naar TV gaat, MONITOR\GSM0000\{4d36e96e-e325-11ce-bfc1-08002be10318}\0010 (Aangesloten via HDMI)



Batchfile: TV.bat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@ECHO OFF

MultiMonitorTool.exe /enable MONITOR\GSM0000\{4d36e96e-e325-11ce-bfc1-08002be10318}\0010
MultiMonitorTool.exe /SetPrimary MONITOR\GSM0000\{4d36e96e-e325-11ce-bfc1-08002be10318}\0010
MultiMonitorTool.exe /disable MONITOR\DELA07A\{4d36e96e-e325-11ce-bfc1-08002be10318}\0009
MultiMonitorTool.exe /disable MONITOR\IVM5398\{4d36e96e-e325-11ce-bfc1-08002be10318}\0008

nircmdc.exe setdisplay monitor:MONITOR\GSM0000\{4d36e96e-e325-11ce-bfc1-08002be10318}\0010 1360 768 32

nircmdc.exe setdefaultsounddevice "LG TV-4" 0
nircmdc.exe setdefaultsounddevice "LG TV-4" 1
nircmdc.exe setdefaultsounddevice "LG TV-4" 2

pause


Batchfile: PC.bat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@ECHO OFF

MultiMonitorTool.exe /enable MONITOR\DELA07A\{4d36e96e-e325-11ce-bfc1-08002be10318}\0009
MultiMonitorTool.exe /SetPrimary MONITOR\DELA07A\{4d36e96e-e325-11ce-bfc1-08002be10318}\0009
MultiMonitorTool.exe /enable MONITOR\IVM5398\{4d36e96e-e325-11ce-bfc1-08002be10318}\0008
MultiMonitorTool.exe /disable MONITOR\GSM0000\{4d36e96e-e325-11ce-bfc1-08002be10318}\0010

nircmdc.exe setdisplay MONITOR\DELA07A\{4d36e96e-e325-11ce-bfc1-08002be10318}\0009 1920 1200 32
nircmdc.exe setdisplay MONITOR\IVM5398\{4d36e96e-e325-11ce-bfc1-08002be10318}\0008 1680 1050 32


nircmdc.exe setdefaultsounddevice "Speakers" 0
nircmdc.exe setdefaultsounddevice "Speakers" 1
nircmdc.exe setdefaultsounddevice "Speakers" 2

pause


Batchfile: Alles.bat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@ECHO OFF

MultiMonitorTool.exe /enable MONITOR\GSM0000\{4d36e96e-e325-11ce-bfc1-08002be10318}\0010
MultiMonitorTool.exe /enable MONITOR\DELA07A\{4d36e96e-e325-11ce-bfc1-08002be10318}\0009
MultiMonitorTool.exe /SetPrimary MONITOR\DELA07A\{4d36e96e-e325-11ce-bfc1-08002be10318}\0009
MultiMonitorTool.exe /enable MONITOR\IVM5398\{4d36e96e-e325-11ce-bfc1-08002be10318}\0008

nircmdc.exe setdisplay monitor:MONITOR\GSM0000\{4d36e96e-e325-11ce-bfc1-08002be10318}\0010 1360 768 32
nircmdc.exe setdisplay MONITOR\DELA07A\{4d36e96e-e325-11ce-bfc1-08002be10318}\0009 1920 1200 32
nircmdc.exe setdisplay MONITOR\IVM5398\{4d36e96e-e325-11ce-bfc1-08002be10318}\0008 1680 1050 32

nircmdc.exe setdefaultsounddevice "Speakers" 0
nircmdc.exe setdefaultsounddevice "Speakers" 1
nircmdc.exe setdefaultsounddevice "Speakers" 2

pause


TV.bat werkt foutloos.
Maar als ik dan vanuit die situatie PC.bat of Alles.bat draai, gaan de monitoren op mn desktop niet aan. (En m'n TV ook niet uit, maar dat lijkt me wel logisch, dat je niet het enige aanstaande scherm kan afsluiten)
Nu had ik eerst de volgordes van de commandos wat vreemd (primary monitor uitschakelen, monitor primary maken die nog niet aan staat, etc.) maar voor zo ver ik zie is dat er nu uit.

Ik heb eerlijk gezegd geen idee meer waar het aan kan liggen.

Nu heb ik wel een bachelor informatica op zak, maar ik heb nauwlijks ervaring met batchfiles dus het zou ook nog kunnen dat ik ergen een domme beginnersfout maak.

[ Voor 3% gewijzigd door Polbeer91 op 12-01-2016 00:26 ]

Steam

Alle reacties


Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 21:27
In PC.bat gebruik je een iets andere syntax bij nircmdc.exe, zou het daar aan kunnen liggen? Het lijkt erop dat je voor je TV aanroept met monitor:MONITOR_NAME, terwijl je bij de andere geen monitor: neerzet.

Daarnaast zou ik deze volgorde gebruiken:

Zet nieuwe primary aan
Maak primary
Zet oude primary uit
Zet nieuwe secondary aan

Geen idee of het impact heeft, maar voorkomt problemen met bijvoorbeeld als je niet drie schermen tegelijk aan kan sturen via de tool (weet niet of dat zo is)

MultiMonitorTool.exe heeft trouwens ook een /setmax welke de max resolutie en kleurdiepte pakt voor het beeldscherm, kan je die niet beter gebruiken dan nog een extra tool?

[ Voor 14% gewijzigd door Merethil op 12-01-2016 07:53 ]


Acties:
  • 0 Henk 'm!

  • Polbeer91
  • Registratie: Juli 2009
  • Laatst online: 11-08 13:00
Merethil schreef op dinsdag 12 januari 2016 @ 07:47:
In PC.bat gebruik je een iets andere syntax bij nircmdc.exe, zou het daar aan kunnen liggen? Het lijkt erop dat je voor je TV aanroept met monitor:MONITOR_NAME, terwijl je bij de andere geen monitor: neerzet.
Bedankt voor je reactie!

Scherp, heb ik nu aangepast, maar helpt niet, aangezien de monitoren niet eens aan gaan.
Daarnaast zou ik deze volgorde gebruiken:

Zet nieuwe primary aan
Maak primary
Zet oude primary uit
Zet nieuwe secondary aan

Geen idee of het impact heeft, maar voorkomt problemen met bijvoorbeeld als je niet drie schermen tegelijk aan kan sturen via de tool (weet niet of dat zo is)
Heb ik gedaan, helpt helaas ook niet. 3 monitoren lijkt trouwens niet het probleem. Vanuit de situatie dat alleen mn twee monitoren aanstaan kan ik prima naar de situatie waarin alles aanstaat en terug.
MultiMonitorTool.exe heeft trouwens ook een /setmax welke de max resolutie en kleurdiepte pakt voor het beeldscherm, kan je die niet beter gebruiken dan nog een extra tool?
Volgens de documentatie (http://www.nirsoft.net/utils/multi_monitor_tool.html) lust /setmax geen parameters, en als ik die gebruik zet ie de TV op 1920x1080 wat de boel onleesbaar maakt. Niettemin toch geprobeerd, biedt helaas ook geen soelaas.

Heb zelf wat zitten testen met dit testscriptje:
Batchfile:
1
2
3
4
5
@ECHO OFF

MultiMonitorTool.exe /enable MONITOR\DELA07A\{4d36e96e-e325-11ce-bfc1-08002be10318}\0009

pause


Het enige wat hier dus gebeurd is dat ik één van de monitoren aan wil zetten (de main in dit geval).
Als ik dit uitvoer op het moment dat alleen de TV aan staat doet dit niets.
Connect ik dan zelf via windows de 2e monitor (TV is nog steeds primary), dan doet dit script het wel en zet netjes de andere monitor ook aan.

In mijn ogen lijkt het erop dat de monitoren (die via DVI zitten aangesloten (eentje dan nog met DVI-VGA verloopje)) niet luisteren naar een aan-command als ze allebei uit staan.

Ik gebruik een MSI GTX 970 GAMING 4G GDDR5 VGA voor het aansturen van alle schermen.
Zou het kunnen dat daar intern iets gebeurd op het moment dat alleen de HDMI nog gebruikt wordt waardoor de rest niet reageert ofzo?

Steam