AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language DisplaySwitch über ShellExecute oder WinExec funktioniert nicht

DisplaySwitch über ShellExecute oder WinExec funktioniert nicht

Ein Thema von martinwk · begonnen am 27. Jan 2020 · letzter Beitrag vom 28. Jan 2020
Antwort Antwort
Seite 2 von 2     12
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
7.563 Beiträge
 
Delphi XE4 Professional
 
#11

AW: DisplaySwitch über ShellExecute oder WinExec funktioniert nicht

  Alt 27. Jan 2020, 18:30
Hallo,
%SystemRoot%\SysNative\DisplaySwitch.exe

unter 32bit immer noch
file not found
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.410 Beiträge
 
Delphi 5 Professional
 
#12

AW: DisplaySwitch über ShellExecute oder WinExec funktioniert nicht

  Alt 27. Jan 2020, 18:47
Naja, die Umgebungsvariable(n) musst du vorher wahrscheinlich schon auflösen (MSDN-Library durchsuchenExpandEnvironmentStrings).

Grüße
Dalai
  Mit Zitat antworten Zitat
martinwk

Registriert seit: 27. Jan 2020
2 Beiträge
 
#13

AW: DisplaySwitch über ShellExecute oder WinExec funktioniert nicht

  Alt 27. Jan 2020, 22:50
Besten Dank für die vielen Tipps. Es funktioniert jetzt!
Aber nur in der folgenden Form, als 64-bit Programm compiliert:
ShellExecute(Handle, 'open', PChar('DisplaySwitch.exe'), PChar('/external'), nil, SW_HIDE);
Es funktioniert nicht mit der Pfadangabe: %SystemRoot%\SysNative\DisplaySwitch.exe, auch nicht, wenn ich DisplaySwitch über eine Batch-Datei aufrufe.
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.410 Beiträge
 
Delphi 5 Professional
 
#14

AW: DisplaySwitch über ShellExecute oder WinExec funktioniert nicht

  Alt 27. Jan 2020, 23:10
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 MSDN-Library durchsuchenExpandEnvironmentStrings kann man auch MSDN-Library durchsuchenGetWindowsDirectory 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

Geändert von Dalai (27. Jan 2020 um 23:15 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
35.261 Beiträge
 
Delphi 10.3 Rio
 
#15

AW: DisplaySwitch über ShellExecute oder WinExec funktioniert nicht

  Alt 28. Jan 2020, 02:18
Man könnte auch ganz böse C:\Windows hart einprogrammieren.

Als "Bugfix" für schrottige Programme, mit hartcodierten Pfaden, von saudämlichen Programmierern, heißt die Systempartition schon seit Jahren immer C:\ und das Windows-Rootverzeichnis immer Windows, also C:\Windows wird sich nie verändern. :stipid: (mindestens die nächsten Jahrzehnte)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf