Also eine Batchdatei wie
Code:
@echo off
set DS=%SystemRoot%\System32\DisplaySwitch.exe
if exist %SystemRoot%\SysNative\*.exe set DS=%SystemRoot%\SysNative\DisplaySwitch.exe
"%DS%"
funktioniert garantiert.
Und wie gesagt: Umgebungsvariablen müssen sehr wahrscheinlich schon aufgelöst an ShellExecute(Ex) übergeben werden. Die CMD macht das selbst und daher funktioniert das dort ohne weitere Maßnahmen. Alternativ zu
ExpandEnvironmentStrings kann man auch
GetWindowsDirectory benutzen, und den restlichen Pfad 'SysNative\DisplaySwitch.exe' anhängen; neuere Delphis haben das wahrscheinlich schon in der Klasse TPath oder sowas.
Grüße
Dalai