Hallo,
jetzt wird es etwas kompliziert. Ich weiß nicht wie reproduzierbar meine Lösung ist und vielleicht verliere ich mich in Pseudoerklärungen (ich bin Laie was das angeht), allerdings läuft es jetzt bei mir. Doch der Reihe nach..
Unter Windows 7 hatte ich diese Lösung auch genutzt, unter Windows 8 hatte ich es aber noch nicht getetest. Also habe ich es vorhin ausprobiert und es ging tatsächlich nicht bzw. nur sporadisch. Es schien als würde der PC einfach stumpf beide Befehle nacheinander abarbeiten und daher, je nach der in dem letztem Befehl angeprochenen Grafikkarte, auch nur diese aktivieren. Manchmal hats aber trotzdem geklappt, das war jedoch schlecht reproduzierbar.
Nachdem ich die .bat-Datei mal versuchsweise in der cmd.exe im Adminmodus ausgeführt hatte, lief es jedoch zuverlässig. Also habe ich mal probehalber die .bat in .cmd umgeändert und es lief (also ohne Umweg über die cmd.exe). Aber irgendwie erschien mir das unlogisch.
Naja dann habe ich mich irgendwie in Recherchen im Internet verloren und noch dutzende andere Sachen ausprobiert. U. a. habe ich mir
DevCon besorgt (eine kommandozeilenbasierter Gerätemanager von Microsoft) und mithilfe diverser Forenposts eine neue .bat-Datei erstellt. Zu DevCon ist noch zu ergänzen, dass die x86-Version auch unter x64 läuft, die eigentliche x64-Version aber nicht (warum auch immer).
Code:
@echo off & setlocal
set __COMPAT_LAYER=RunAsInvoker
set Action="C:\Program Files (x86)\ThinkPad\Utilities\PWMUIAux.exe" /HighPerformanceGpu /ShowDialog
C:\devcon.exe status "PCI\VEN_1002&DEV_95C4&SUBSYS_210F17AA&REV_00" | findstr "running">nul && set Action="C:\Program Files (x86)\ThinkPad\Utilities\PWMUIAux.exe" /EnergySavingGpu /ShowDialog
%Action%
Zur Erklärung:
"__COMPAT_LAYER=RunAsInvoker" dient dazu die Adminbestätigung für DevCon auszublenden, es braucht nur Lesezugriff. Ohne diesen Befehl müsste man bei jedem Ausführen dieses Adminfenster bestätigen.
"PCI\VEN_1002&DEV_95C4&SUBSYS_210F17AA&REV_00" ist die HardwareID der Ati-Grafikkarte.
Es passiert folgendes:
1. "HighPerformanceGpu" wird als Standard definiert.
2. Mittels DevCon wird überprüft ob die Ati aktiviert ist. Wenn sie aktiviert ist, wird "EnergySavingGpu" als neuer Standard definiert. Wird die Ati nicht gefunden bleibt "HighPerformanceGpu" der Standard.
3. Je nach Ergebnis der DevCon-Prüfung wird ein "anderer" Standard geladen.
Damit konnte ich dann auch die Grafik per Knopfdruck wechseln.
Mit dem ganzen Rumprobieren scheine ich aber irgendwas verändert zu haben, denn jetzt geht auch die ursprüngliche .bat-Datei zuverlässig bei mir (oder es ging vorher aus anderem Grund nicht).
Long story short..
1. Die ursprüngliche Datei mal in .cmd umbenennen und ausprobieren.
und/oder
2. Die DevCon-Methode als Alternative ausprobieren (s. o.)
Viele Grüße
André