Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi CD Laufwerk abfragen (https://www.delphipraxis.net/121387-cd-laufwerk-abfragen.html)

the_summoner 26. Sep 2008 16:03


CD Laufwerk abfragen
 
Hallo Delphi Com,

ich bin zur Zeit dabei ein Programm zu schreiben welches auf einer CD als eine Art Setup Menü fungieren soll.

Das funktioniert bisher alles auch soweit, nur häng ich gerade an einem Problem.
Und zwar wenn das CD Laufwerk geöffnet wird, bleibt das Menü auch noch geöffnet. Und wenn dann über eines der MouseOver events auf eine Funktion zugegriffen wird crasht es natürlich.

Nun meine Frage: Wie kann ich durchgehend abfragen ob die CD noch im Laufwerk liegt? bzw. Abfragen wenn das Laufwerk geöffnet wird, damit ich mich um den Crash kümmern kann.

Ich hab schon einiges danach durchsucht aber immer nur was zum Laufwerk öffnen/schließen gefunden...

Danke schonmal für Antworten, und sorry falls es den Thread schonmal gab, hab ihn nich gefunden :X

mfg Norman

p80286 26. Sep 2008 17:26

Re: CD Laufwerk abfragen
 
Hallo norman,

wenn ich Dich richtig verstanden habe, willst Du ein Programm von einer CD starten, und das Programm informieren, wenn auf diese CD nicht mehr zugegriffen werden kann?

Mach es einfach und frag nach einer bestimmten Datei (z.B. die Programmdatei), wenn die nicht mehr gefunden wird, ist die CD nicht mehr lesbar/im Laufwerk.

Nicht elegant aber effektiv

Gruß
K-H

the_summoner 26. Sep 2008 22:37

Re: CD Laufwerk abfragen
 
Danke für die Antwort aber so hab ich es schon probiert.

Ich hatte einen Timer auf 2 sec testweise gestellt und ihn immer nach der Autorun.inf von der CD suchen lassen.
An sich funktioniert es auch soweit, allerdings werden bei den MouseOver events einige Sachen aus einer XML Datei ausgelesen und es kommt zu einer Exception die ich nur schwer nachprüfen kann, aber definitiv noch vor dem abfragen nach der gesuchten Datei.

Deshalb dachte ich, vllt es gäbe eine Funktion mit der man das Laufwerk direkt abfragen kann?

Wenn es wirklich nicht anders geht muss wohl mal die komplette Funktion zerpflücken und nachsehen auf was noch alles zugegriffen wird.

Fussball-Robby 26. Sep 2008 22:42

Re: CD Laufwerk abfragen
 
Zitat:

Zitat von the_summoner
Ich hatte einen Timer auf 2 sec testweise gestellt und ihn immer nach der Autorun.inf von der CD suchen lassen.
An sich funktioniert es auch soweit, allerdings werden bei den MouseOver events einige Sachen aus einer XML Datei ausgelesen und es kommt zu einer Exception die ich nur schwer nachprüfen kann, aber definitiv noch vor dem abfragen nach der gesuchten Datei.

Überprüf die Existenz der Datei doch einfach unmittelbar vor dem auslesen, oder, noch besser, überprüf vor jedem Dateizugriff ob die Datei, auf die zugegriffen werden soll, existiert.

Luckie 26. Sep 2008 22:56

Re: CD Laufwerk abfragen
 
Eigentlich ist eine ständige Abfrage überflüssig, wenn man eine gescheite Fehlerbehandlung implementiert hat.

Garfield 27. Sep 2008 10:23

Re: CD Laufwerk abfragen
 
Zitat:

Zitat von the_summoner
Nun meine Frage: Wie kann ich durchgehend abfragen ob die CD noch im Laufwerk liegt? bzw. Abfragen wenn das Laufwerk geöffnet wird, damit ich mich um den Crash kümmern kann.

Eine durchgehende Abfrage ist nicht notwendig. Wenn eine CD entfernt bzw eingelegt wird, wird eine Message WM_DEVICECHANGE versendet. Darin ist der Laufswerkstyp, das Laufwerk und das Ereignis enthalten. Das musst Du dann entsprechend auswerten.

http://msdn.microsoft.com/en-us/libr...80(VS.85).aspx
http://msdn.microsoft.com/en-us/libr...15(VS.85).aspx
http://msdn.microsoft.com/en-us/libr...46(VS.85).aspx
http://msdn.microsoft.com/en-us/libr...49(VS.85).aspx
http://www.delphi-treff.de/tipps/system/tipp/138/

the_summoner 29. Sep 2008 10:04

Re: CD Laufwerk abfragen
 
Guten morgen und vielen dank für die Antworten.

Genau nach sowas wie der WM_DEVICECHANGE hab ich gesucht.

Wegen der gescheiten Fehlerbehandlung kann ich zu meiner Verteidigung sagen, dass ich das Programm zur Zeit nur von einem Kollegen weiterführe und somit die Anfänge des Programms nicht von mir sind und da noch nichts in der Richtung implementiert ist ;)

Aber danke an alle. Es klappt jetzt so wie ich mir das vorgestellt hatte.

mfg Norman

schwa226 10. Dez 2008 13:25

Re: CD Laufwerk abfragen
 
Hi,

ich habe eine zusätzliche Frage zu den Thema WMDeviceChange.

Ich habe das nach dem Tipp der oben angeben ist programiert. Ich bekomme auch eine Meldung wenn ein Datenträger eingelegt/entfernt wird.

Wie ist jetzt aber am besten um herauszufinden ob der Datenträger eine

Audio CD
Video CD
Video DVD
(BluRay, HDDVD)

usw ist!?

Muss ich da manuell die Dateistruktur des Datenträgers scannen oder geht das auch einfacher?

Garfield 10. Dez 2008 17:36

Re: CD Laufwerk abfragen
 
Deine Frage hat mit der Ausgangsfrage eigentlich nichts mehr zu tun und Du müsstest einen eigenen Thread aufmachen. An sonsten sieh Dir http://www.delphipraxis.net/internal...ct.php?t=97155 an und suche nach der TISOLib, da ist auch noch einiges drin.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:20 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