Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Windows Media Player mit ShellExecute ausführen? (https://www.delphipraxis.net/183637-windows-media-player-mit-shellexecute-ausfuehren.html)

OrNEC 24. Jan 2015 16:50

Windows Media Player mit ShellExecute ausführen?
 
Hallo,

ich habe vor mittels ShellExecute den WMP ausführen und diesem eine mp3-Datei zum Abspielen übergeben. Nun wie starte ich mit ShellExecute den WMP? Gib es eine Verzeichnisvariable die weiß wo der WMP liegt, unabhängig von der Windows Version?

Danke!

DeddyH 24. Jan 2015 17:03

AW: Windows Media Player mit ShellExecute ausführen?
 
Vielleicht hilft das hier: http://www.autoitscript.com/forum/to...n-path-of-wmp/

EWeiss 24. Jan 2015 17:24

AW: Windows Media Player mit ShellExecute ausführen?
 
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

gruss

DeddyH 24. Jan 2015 17:34

AW: Windows Media Player mit ShellExecute ausführen?
 
Naja, der Pfad steht dort aber auch nicht ;)

OrNEC 24. Jan 2015 17:51

AW: Windows Media Player mit ShellExecute ausführen?
 
Ich glaube schon, hier -> "HKEY_LOCAL_MACHINE\Software\Microsoft\Multimedia\ WMPlayer\" Link

Wie kann ich nur den Pfad vervollständigen? Mit dem Laufwerk usw.. aktuell sieht es so aus:

Delphi-Quellcode:
%ProgramFiles(x86)%\Windows Media Player\wmplayer.exe

DeddyH 24. Jan 2015 18:00

AW: Windows Media Player mit ShellExecute ausführen?
 
Delphi-Quellcode:
uses Registry;

function WMPPath: String;
var
  Reg: TRegistry;
begin
  Result := '';
  Reg := TRegistry.Create(KEY_READ);
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    if Reg.OpenKey('SOFTWARE\Microsoft\Multimedia\WMPlayer', false) then
      begin
        Result := Reg.ReadString('Player.Path');
        Reg.CloseKey;
      end;
  finally
    Reg.Free;
  end;
end;
Ggf. musst Du die enthaltenen Umgebungsvariablen noch auflösen.

OrNEC 24. Jan 2015 18:08

AW: Windows Media Player mit ShellExecute ausführen?
 
Danke Dir!

Wie kann ich nun den Pfad vervollständigen? Mit dem Laufwerk usw.. aktuell sieht es so aus:

Delphi-Quellcode:
%ProgramFiles(x86)%\Windows Media Player\wmplayer.exe


Wieso gibt Microsoft eigentlich keinen vollständigen Pfad, was haben die %..% auf sich?

DeddyH 24. Jan 2015 18:24

AW: Windows Media Player mit ShellExecute ausführen?
 
Das sind Umgebungsvariablen, Du kannst ja mal auf der Konsole mit "set" nachschauen, was es so alles gibt. Auflösen kannst Du die z.B. mit ExpandEnvironmentStrings oder mit dieser eigentlich veralteten Routine:
Delphi-Quellcode:
function ReplaceEnvironmentStrings(const APath: string): string;
begin
  Result := APath;
  SetLength(Result, MAX_PATH);
  if DoEnvironmentSubst(PChar(Result), Length(Result)) = 0 then
    begin
      Result := '';
      raise Exception.Create(SysErrorMessage(GetLastError));
    end;
  SetLength(Result, StrLen(PChar(Result)));
end;
Bei mir kommt dann "C:\Program Files (x86)\Windows Media Player\wmplayer.exe" heraus.

OrNEC 24. Jan 2015 18:33

AW: Windows Media Player mit ShellExecute ausführen?
 
Wow... danke Dir! Jetzt funkt alles. :thumb:

Redeemer 24. Jan 2015 22:27

AW: Windows Media Player mit ShellExecute ausführen?
 
Man muss zum Ausführen des WMP doch überhaupt keinen Pfad angeben...

DeddyH 24. Jan 2015 22:43

AW: Windows Media Player mit ShellExecute ausführen?
 
Wenn man sich auf die Path-Variable verlässt, dann nicht, aber man ist dann auch nicht sicher, ob bzw. welches Programm dann ausgeführt wird.

Dalai 25. Jan 2015 03:28

AW: Windows Media Player mit ShellExecute ausführen?
 
Zitat:

Zitat von Redeemer (Beitrag 1287675)
Man muss zum Ausführen des WMP doch überhaupt keinen Pfad angeben...

Stimmt nicht unbedingt. Wer sagt denn, dass WMP tatsächlich vorhanden ist und auf einen gültigen Pfad verweist?

Zitat:

Zitat von DeddyH (Beitrag 1287676)
Wenn man sich auf die Path-Variable verlässt, dann nicht, aber man ist dann auch nicht sicher, ob bzw. welches Programm dann ausgeführt wird.

Der liegt nicht im %PATH%. Es gibt aber in der Registry so einen lustigen Zweig, wo die absoluten Pfade zu vielen EXE-Dateien hinterlegt sind, so dass sie auch ohne Pfadangabe gefunden werden:
Code:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths
Dort steht (normalerweise) auch die wmplayer.exe drin. Das kann man recht einfach selbst ausprobieren: Start > Ausführen und dort irgendeine im o.g. Zweig angegebene EXE angeben und starten. Sofern die dort hinterlegten Angaben stimmen, wird die Anwendung gestartet. Das ist ein Feature, das mir auch schon so manche Stunde Nachforschung bescherte...

MfG Dalai


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz