danielderanfaenger
Goto Top

Verschiedene Monitore Einstellen

Hallo Community,
ich habe Folgendes Problem bei dem ich eure Hilfe gebrauchen könnte.

An meinem PC habe ich 3 Monitore am Motherboard angeschlossen

Monitor 1=Hauptmonitor (WQHD) [DisplayPort 1] als Hauptmonitor
Monitor 2=Zweitmonitor (Full HD) [HDMI 1.0] als 2. Bildschirm
Monitor 3=Beamer (4K) [HDMI 2.0] für Filme und Serien

Alle Monitore/Beamer werden in den Anzeigeeinstellungen von Windows erkannt.

Nun habe ich mir überlegt nicht immer alle 3 Monitore gleichzeitig laufen zu lassen, da dies wahrscheinlich meine Grafikkarte und auch den Stromverbrauch ziemlich ausreizen. Ich wollte ein Tool verwenden um automatisch unterschiedliche Monitore/Beamer zusammen zu Verwenden.

Ich wollte eine Datei oder z.B. ein Script erstellen welche beim Ausführen unterschiedliche Monitore aktiviert bzw. deaktiviert.

In meinem Fall:
Script 1/Programm 1 "Zocken" nur ein Ausgangssignal auf meinen Hauptmonitor
Script 2/Programm 2 "arbeiten" zwei Ausgangssignale auf mein Hauptmonitor und mein 2. Monitor als Erweiterung
Script 3/Programm 3 "Filme/Serien gucken" zwei Ausgangssignale auf mein Hauptmonitor und mein Beamer dupliziert

Meine Idee war es die Powershell ISE zu benutzen um ein Script zu erstellen welches beim ausführen meine Anzeigeeinstellung wie oben angegeben ausführt. Ich habe zuerst meine Powershell mit dem Befehl
Set-ExecutionPolicy  RemoteSigned
der Skript-Datei die Ausführung erlaubt und die Einstellung mit
Get-ExecutionPolicy
überprüft. Dies hat auch sofort geklappt. Probleme habe ich aber schon mit dem öffnen der Anzeigeeinstellung da ich nur den Pfad C:\Windows\ImmersiveControlPanel\SystemSettings.exe gefunden habe und somit in der 1. Zeile der Powershell
Start-Process -FilePath C:\Windows\ImmersiveControlPanel\SystemSettings.exe
stehen habe. Diese lässt sich zwar ausführen aber das Einstellungsfenster öffnet sich dennoch nicht.
Die weiteren Zeilen will ich mit der Bedingung der Einstellungen schreiben. Ist das Bedienen des Einstellungsprogramms über die Powershell überhaupt möglich? Sollte ich für diese Programmierung ein anderes Tool benutzen? Ich bin für jegliche Hilfe euch dankbar. face-smile

Ich entschuldige mich im Vorhinein für Rechtschreibfehler und/oder falsche Fachbegriffe. :D

MfG DanielderAnfaenger
powershell_ise

Content-Key: 2813875685

Url: https://administrator.de/contentid/2813875685

Printed on: April 24, 2024 at 01:04 o'clock

Member: NordicMike
NordicMike May 18, 2022 at 05:12:01 (UTC)
Goto Top
Hi,

mit der Powershelll kannst du keine GUI fernbedienen. Autohotkey könnte das.
Die GUI führt aber auch nur Befehle aus, die du per Powershell ebenfalls ausführen kannst. Such also nach diesen Befehlen.

z.B.
https://www.tenforums.com/graphic-cards/170286-powershell-request-turn-o ...
Member: Doskias
Solution Doskias May 18, 2022 at 06:24:28 (UTC)
Goto Top
Moin
Zitat von @NordicMike:
mit der Powershelll kannst du keine GUI fernbedienen. Autohotkey könnte das.
Die GUI führt aber auch nur Befehle aus, die du per Powershell ebenfalls ausführen kannst. Such also nach diesen Befehlen.
z.B.
https://www.tenforums.com/graphic-cards/170286-powershell-request-turn-o ...

Powershell kann das im Prinzip auch, wenn ich nicht komfortabel. Kurzes Beispiel:
$wshell = New-Object -ComObject wscript.shell
sleep 2
$wshell.SendKeys('^{ESC}')  
sleep 2
$wshell.SendKeys('system')  
sleep 2
$wshell.SendKeys('~')  

Was passiert hier?
Zeile 1 erstellt dir ein neues Objekt, was du dann gleich brauchst
Zeile 2,4 und 6 warten einfach 2 Sekunden
Zeile 3,5 und 7 senden, wie der Name schon sagt, Tastaturkombinationen an deinen Rechner:
Im detail:
Zeile 3 Strg + Esc = Windowstaste
Zeile 5 schreibt "System"
Zeile 7 drückt für dich Enter.

Ergebnis: Die Systemsteuerung öffnet sich, als würdest du die Windowstaste drücken, System eingeben und Enter drücken. Das ganze funktioniert natürlich nur, wenn sich die entsprechenden Fenster innerhalb von 2 Sekunden öffnen und du nicht zwischendurch irgendwohin klickst. Da du damit im Prinzip jedes Menü steuern kannst und dich mit Tab und co. durch alles durchhangeln kannst, kannst du dir auf diese Art alle Einstellungen vornehmen. Du musst halt nur einmal händisch die Schritte durchführen und dabei notieren was du wann und wie oft machst.

Wenn du in der Systemsteuerung bist, musst du zum Beispiel einfach 2 x nach rechts und 7 x nach unten um System zu öffnen. Dann Tab und Enter für die Bildschirmeinstellungen und so weiter. Leg einfach die Maus weg und mach über die Tastatur alles was du machen willst, schreib es dir auf und bau es mit sendkeys nach.

Alle Sondertasten findest du hier:
https://docs.microsoft.com/en-us/previous-versions/office/developer/offi ...

Gruß
Doskias

Und ja.... streng genommen macht es nicht Powershell face-wink
Member: colinardo
Solution colinardo May 18, 2022 updated at 06:43:05 (UTC)
Goto Top
Servus.
Zitat von @NordicMike:
mit der Powershelll kannst du keine GUI fernbedienen.
Oh Oh, gewagte Aussage 😉. Habe ich hier schon diverse Male gezeigt wie das geht...
Windows 10 - Lautstärkepopup entfernen

Verknüpfungsziel nicht vorhanden. Abfrage nach Löschung der Verknüpfung unterdrücken ?

Usw.

Autohotkey nutzt auch nur die Win32 Funktionen genau das kann auch die PowerShell.

Die GUI führt aber auch nur Befehle aus, die du per Powershell ebenfalls ausführen kannst. Such also nach diesen Befehlen.
Jepp, immer die bessere Wahl.

Fertig gibst fur dich schon hier für die Konsole
https://www.nirsoft.net/articles/turn-off-monitor.html


Btw. Sendkeys ist schon ziemlich altbacken, vernünftiger und vor allem zuverlässiger geht es mit den echten Win32 Funktionen.

Grüße Uwe
Member: NordicMike
NordicMike May 18, 2022 at 06:42:00 (UTC)
Goto Top
Danke Doskias und Uwe,

da habe ich tatsächlich noch was dazu gelernt. Ich würde Daniel ebenfalls empfehlen die Win32 Funktionen zu verwenden, da dort keine Pause zum Ausführen eingebaut werden muss. Wenn der erste Befehl fertig ist, wird der zweite Befehl gleich danach ausgeführt.
Member: Doskias
Doskias May 18, 2022 at 07:03:42 (UTC)
Goto Top
Zitat von @colinardo:
Btw. Sendkeys ist schon ziemlich altbacken, vernünftiger und vor allem zuverlässiger geht es mit den echten Win32 Funktionen.

Dem kann, will und werde ich nicht widersprechen face-smile Grade in diesem Bereich sind die Win32 Funktionen sicher deutlich besser, stabiler und zielführender.
Member: DanielderAnfaenger
DanielderAnfaenger May 18, 2022 at 16:43:19 (UTC)
Goto Top
Zitat von @Doskias:

Moin
Zitat von @NordicMike:
mit der Powershelll kannst du keine GUI fernbedienen. Autohotkey könnte das.
Die GUI führt aber auch nur Befehle aus, die du per Powershell ebenfalls ausführen kannst. Such also nach diesen Befehlen.
z.B.
https://www.tenforums.com/graphic-cards/170286-powershell-request-turn-o ...

Powershell kann das im Prinzip auch, wenn ich nicht komfortabel. Kurzes Beispiel:
$wshell = New-Object -ComObject wscript.shell
sleep 2
$wshell.SendKeys('^{ESC}')  
sleep 2
$wshell.SendKeys('system')  
sleep 2
$wshell.SendKeys('~')  

Was passiert hier?
Zeile 1 erstellt dir ein neues Objekt, was du dann gleich brauchst
Zeile 2,4 und 6 warten einfach 2 Sekunden
Zeile 3,5 und 7 senden, wie der Name schon sagt, Tastaturkombinationen an deinen Rechner:
Im detail:
Zeile 3 Strg + Esc = Windowstaste
Zeile 5 schreibt "System"
Zeile 7 drückt für dich Enter.

Ergebnis: Die Systemsteuerung öffnet sich, als würdest du die Windowstaste drücken, System eingeben und Enter drücken. Das ganze funktioniert natürlich nur, wenn sich die entsprechenden Fenster innerhalb von 2 Sekunden öffnen und du nicht zwischendurch irgendwohin klickst. Da du damit im Prinzip jedes Menü steuern kannst und dich mit Tab und co. durch alles durchhangeln kannst, kannst du dir auf diese Art alle Einstellungen vornehmen. Du musst halt nur einmal händisch die Schritte durchführen und dabei notieren was du wann und wie oft machst.

Wenn du in der Systemsteuerung bist, musst du zum Beispiel einfach 2 x nach rechts und 7 x nach unten um System zu öffnen. Dann Tab und Enter für die Bildschirmeinstellungen und so weiter. Leg einfach die Maus weg und mach über die Tastatur alles was du machen willst, schreib es dir auf und bau es mit sendkeys nach.

Alle Sondertasten findest du hier:
https://docs.microsoft.com/en-us/previous-versions/office/developer/offi ...

Gruß
Doskias

Und ja.... streng genommen macht es nicht Powershell face-wink

Danke für die Antwort, funktioniert schon genau so wie du gesagt hats und super Erklärung zu den einzelnen Zeilen. Hab auch sofort verstanden wie es funktioniert, das einzige was nicht damit machbar ist ist in der GUI den ersten monitor nach links oder rechts zu verschieben da die eine drag and drop Eingabe ist. Aber dennoch bin ich schlauer geworden wie man die Powershell noch benutzen kann um Keybordeingaben zu steuern face-smile face-smile
Member: DanielderAnfaenger
DanielderAnfaenger May 18, 2022 at 16:54:06 (UTC)
Goto Top
Zitat von @colinardo:

Servus.
Zitat von @NordicMike:
mit der Powershelll kannst du keine GUI fernbedienen.
Oh Oh, gewagte Aussage 😉. Habe ich hier schon diverse Male gezeigt wie das geht...
Windows 10 - Lautstärkepopup entfernen

Verknüpfungsziel nicht vorhanden. Abfrage nach Löschung der Verknüpfung unterdrücken ?

Usw.

Autohotkey nutzt auch nur die Win32 Funktionen genau das kann auch die PowerShell.

Die GUI führt aber auch nur Befehle aus, die du per Powershell ebenfalls ausführen kannst. Such also nach diesen Befehlen.
Jepp, immer die bessere Wahl.

Fertig gibst fur dich schon hier für die Konsole
https://www.nirsoft.net/articles/turn-off-monitor.html


Btw. Sendkeys ist schon ziemlich altbacken, vernünftiger und vor allem zuverlässiger geht es mit den echten Win32 Funktionen.

Grüße Uwe

Das MultiMonitorprogramm ist genau das was ich suche. Die monitore kann ich dann über die Windows Einstellungen so anpassen wie ich es haben will und das Tool erkennt dies und lässt mich eine CFG-Datei abspeichern welche ich dann mit dem MultiMonitorTool wieder laden kann. Das ist bis jetzt die einfachste Methode.

Durch ein wenig Research habe ich auch Rausgefunden das meine Powershell auch den Befehl
Diskplayswitch /extend
versteht und somit zumindest den 1. und 2. Monitor auf "Erwitern" einstellen kann. Dies scheint auch eine gute Möglichkeit zu sein die Bildschirme über die Powershell zu "bearbeiten" face-smile.
Vielleicht wenn ich mir noch eure Beiträge durchlese werden meine Kenntnisse noch besser und ich schaffe es sogar mir ein Skript zu erstellen.

Auf jeden Fall danke für die super Antwort!
Member: Doskias
Doskias May 19, 2022 at 06:39:12 (UTC)
Goto Top
Zitat von @DanielderAnfaenger:
Danke für die Antwort, funktioniert schon genau so wie du gesagt hats und super Erklärung zu den einzelnen Zeilen. Hab auch sofort verstanden wie es funktioniert, das einzige was nicht damit machbar ist ist in der GUI den ersten monitor nach links oder rechts zu verschieben da die eine drag and drop Eingabe ist.

Doch ging face-wink. Einen Monitor auswählen, Pfeiltasten nach unten oder oben, dann nach links oder rechts (abhängig davon welchen monitor du ausgewählt hast) und dann wieder nach oben oder unten. Auch wenn es praktisch ist, du brauchst für Windows eigentlich weiterhin keine Maus, wenn du den richtigen Shortcut kennst. face-wink

Aber dennoch bin ich schlauer geworden wie man die Powershell noch benutzen kann um Keybordeingaben zu steuern face-smile

Wie schon gesagt ist das allerdings etwas veraltet. Powershell greift hier auf die Windows Scripting Shell zurück mit all seinen Krankheiten und Fehleranfälligkeiten. Kleinste Abweichung, falsches Fenster, ein Klick zwischendurch und die Befehle laufen bestenfalls ins leere, im schlimmsten Fall in ein anderes Fesnter.