![]() |
ZV bei Benutzung von Windows Media Player 9
Ich habe folgendes Problem:
Ich habe in mein Programm den Windows Media Player 9 integriert (als ActiveX Element). Wenn der Benutzer diesen verwendet hat und das Programm beendet wird, treten zwei Zugriffsverletzungen auf. Selbst wenn ich den Programmcode für OnCloseQuery und OnClose mit try execpt Blöcken umschließe, erhält der Benutzer beide Fehlermeldungen. Auch wenn ich das Mediaplayer Objekt mit
Delphi-Quellcode:
prüfe und es, falls erforderlich, neu einrichte, hilft dies nichts.
If Assigned(MSMediaPlayer9) then
Wenn der Benutzer den Windows Media Player nicht verwendet, tritt dieses Problem auch nicht auf. Vielleicht liegt es auch an meinem Betriebssystem. Ich arbeite noch mit Windows 98. |
Re: ZV bei Benutzung von Windows Media Player 9
Gib mal en bissel wad an Code ;)
|
Re: ZV bei Benutzung von Windows Media Player 9
Code für OnCloseQuery:
Delphi-Quellcode:
Code für OnFormClose:
procedure TfrmMainform.FormCloseQuery(Sender: TObject;
var CanClose: Boolean); begin if MediaPlayerUsed then FJFMsgDlgA('Windows Media Player hat ein Problem festgestellt!' + #13#13 + 'Überspielen Sie die neueste Aktualisierung aus dem ' + 'Internet, um dieses Problem zu beheben!', 'Windows Media Player 9-Reihe', mbfInfOK); CanClose := true; end;
Delphi-Quellcode:
procedure TfrmMainform.FormClose(Sender: TObject;
var Action: TCloseAction); begin try // DropTarget freigeben DropFileTarget1.Unregister; // Hilfe schließen, wenn Sie noch angezeigt wird Application.HelpCommand(HELP_QUIT,0); // Temporäre Dateien löschen if FileExists(LMDSysInfo1.WinPath + '\Temp\DiskManSQL.txt') then begin FileSetAttr(LMDSysInfo1.WinPath + '\Temp\DiskManSQL.txt',0000); DeleteFile(LMDSysInfo1.WinPath + '\Temp\DiskManSQL.txt'); end; // Veränderungen am Hauptfenster speichern SaveDisplay; except // nichts tun end; end; |
Re: ZV bei Benutzung von Windows Media Player 9
:oops: Nachtrag:
Der abgebildete Code enthält nur noch die Teile, die vor Verwendung des Windows Media Players 9, bereits vorhanden waren. Der Assigned Teil ist nicht mehr vorhanden. Was nichts hilft muss auch nicht unbedingt drinstehen. Nach nochmaliger sehr genauer Fehlersuche (2 Stunden), bin ich zum Entschluss gekommen, dass der Fehler weder im OnCloseQuery noch im OnFormClose Teil auftritt. Er muss also später eintreten. Vielleicht hat jemand eine Idee. |
Re: ZV bei Benutzung von Windows Media Player 9
Habe folgendes geschrieben:
Delphi-Quellcode:
Dadurch tritt nur noch eine Zugriffsverletzung auf. Sicherheitshalber habe ich die 2 Timer noch einmal deaktiviert, obwohl diese beim Beenden des Programms nicht mehr aktiv sein sollten.
procedure TfrmMainform.FormDestroy(Sender: TObject);
begin try TimerUpdate.Enabled := false; TimerTotalSize.Enabled := false; inherited; except // nichts tun end; end; |
Re: ZV bei Benutzung von Windows Media Player 9
Eine weniger gute Lösung!
Ich habe jetzt den Code für FormDestroy wieder gelöscht und eine Prozedur für MSMedisPlayer9.OnError geschrieben:
Delphi-Quellcode:
Jetzt treten zwar wieder 2 Zugriffsverletzungen auf. Allerdings werden diese dem Benutzer nicht mehr angezeigt.
try
inherited; except // nichts tun end; |
Re: ZV bei Benutzung von Windows Media Player 9
Hallo Franz,
ich hatte auch schon öfter Probleme bei Benutzung vom MediaPlayer(ocx). Fehlerfreier wurde es erst mit Benutzung des COM-Objekts bei "später Bindung". Also erst zur Laufzeit COM-Klasse instanziieren und bei Beendigung des Programms wieder vernichten. Vielleicht hilft´s ja :) luwo |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz