Fehlermeldung bei Aufruf von WMP1:TWindowsMediaPlayer;
Hallo!
Ich stehe vor einem Problem, welches ich nach mehreren Tagen intensiven Suchens nicht lösen konnte. Mein, mit Delphi 5 geschriebenes Prog, mit integriertem ActiveX Windowsmediaplayer (welcher z.B. die Datei WMP.DLL braucht) läuft unter XP ohne Prob, aber unter 98, NT od. 2000 kommt es in dem Moment zum Absturz, wenn in der Type - Deklaration: WMP1: TWindowsMediaPlayer; abgearbeitet wird. Wie kann ich vorher abfragen, ob die wmp.dll existiert (oder diese nichtssagenden Fehlermeldungen umgehen))? Wie gesagt, wird create noch nicht ausgeführt. Vielleicht hat ja jemand ne Idee. Vielen Dank! Frankziska |
Re: Fehlermeldung bei Aufruf von WMP1:TWindowsMediaPlayer;
Ganz offensichtlich sind in der DLL eine oder mehrere CoKlassen enthalten,
die nicht auf jedem Rechner installiert sind. Mit folgender Funktion kann man prüfen, ob so eine CoClass vorhanden ist:
Delphi-Quellcode:
Anwendungsbeispiel:
function ProgIDExists(const ProgID:WideString):Boolean;
var tmp : TGUID; begin Result := Succeeded(CLSIDFromProgID(PWideChar(ProgID), tmp)); end;
Delphi-Quellcode:
[edit=SirThornberry]Delphitags korrigiert - Mfg, SirThornberry[/edit]
if ProgIDExists('Word.Application') then
ShowMessage('WinWord ist installiert'); // die ProgID, die hier folgt habe ich erfunden // du musst die richtige ProgID einsetzen if not ProgIDExists('Mediaplayer.Application') then begin ShowMessage('Mediaplayer 10 ist NICHT installiert'); application.terminate; Exit; end; |
Re: Fehlermeldung bei Aufruf von WMP1:TWindowsMediaPlayer;
Dankeschön !!! vielmals, für eine so schnelle Antwort, werde es nachher testen, schreibe dann das Ergebnis.
Franziska |
DP-Maintenance
Dieses Thema wurde von "Phoenix" von "Programmieren allgemein" nach "Multimedia" verschoben.
Ab nach Multimedia |
Re: Fehlermeldung bei Aufruf von WMP1:TWindowsMediaPlayer;
nun, das Problem für mich ist, das das Prog. schon abstürzt, bevor ich das vorhandensein einer dll abfragen kann. Der unsaubere Ausstieg wird von einer Zeile in der Type - Deklaration provoziert, bevor Form1.create erreicht wird.
Oder kann ich eine Instanz des Windowsmediamplayer auch später ableiten? Grüße Frankziska |
Re: Fehlermeldung bei Aufruf von WMP1:TWindowsMediaPlayer;
Wenn wir den Code kennen würden, könnten wir besser helfen.
|
Re: Fehlermeldung bei Aufruf von WMP1:TWindowsMediaPlayer;
hm, vielleicht habe ich mich unklar ausgedrückt, ich versuche es nochmal:
-ich habe Delphi 5 Prof -ich habe den Windowsmediaplayer in der Palette unter Activex hinzugefügt -ich erstelle ein neues Projekt und eine leere Form -ich ziehe den windowsmediaplayer von der Activex-Palette auf meine Form. wenn ich jetzt dieses kleine (unsinnige) Prog unter xp starte ist alles ok, wenn ich es aber unter NT 98 od. 2000 starte, kommt es zu einer Fehlermeldung (es fehlt vermutlich die wmp.dll). Diese Fehlermeldung möchte ich gerne vermeiden, indem ich type windowsmediaplayer1 : TWindowsMediaPlayer; erst lade, nach dem ich nachgefragt habe, ob die DLL vorhanden ist. Wie kann ich dies am Besten machen? Franziska |
Re: Fehlermeldung bei Aufruf von WMP1:TWindowsMediaPlayer;
Du kannst ja die Komponente zur Laufzeit erstellen. Dazu mußt du sie von der Form nehmen. Die Objektvaribale manuell in die Klassendefinition enfügen und dann im .FormCreate
Delphi-Quellcode:
einfügen. Die Punkte stehen für das Setzen der weiteren Eigenschaften der Komponente.
windowsmediaplayer1 := TWindowsMediaPlayer.Creat(self);
windowsmediaplayer1.Parent := Self; windowsmediaplayer1.Left := ... ... |
Re: Fehlermeldung bei Aufruf von WMP1:TWindowsMediaPlayer;
:thumb: :thumb: :thumb: :thumb: :thumb: :thumb:
Vielen Dank! das ist eine gute Lösung, dies setz ich dann in eine Fehlerbehandlungsroutine, und so kann ich schauen, ob diese Komponente initialisiert wird. Vielen Dank für die schnelle und professionelle Hilfe Franziska |
Re: Fehlermeldung bei Aufruf von WMP1:TWindowsMediaPlayer;
Es geht wahrscheinlich noch einfacher:
Das Property "AutoConnect" sollte auf False gesetzt werden. Dann kann man die Verbindung selbst mit der Methode Connect() herstellen und Fehler abfangen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:14 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