Prüfen ob CDROM Laufwerk offen ist

09/20/2006 10:35 neji#1
jo,

das Topic sagt eigentlich schon alles.

Kennt jemand einen Methode wie man das Prüfen kann bzw ob es überhaupt möglich ist?
Api's wie DeviceIOControl und mciSendCommand/String haben mir nicht weitergeholfen.

Sprache ist eigentlich egal.
09/20/2006 10:45 google:)#2
versteh ich irgendwie nicht Oo?^^
guck doch obs offen ist xD
oder geht die klappe nicht auf?
09/20/2006 11:10 neji#3
das hier ist das Coders Forum, d.h. ich möchte, dass mein Programm gucken kann, ob es offen ist oder nicht ;-)

Hintergrund ist, dass ich für mein Mediaportal EINEN Button haben will, mit dem ich das Laufwerk auf- bzw zu machen kann. Dazu müsste ich ja wissen, welchen Status es zur Zeit hat.

Da der Benutzer auch selber hingehen und auf den Eject Button drücken kann, kann ich auch keine Variable benutzen in der ich speichere obs grad offen oder zu ist :(
09/20/2006 14:09 mr.rattlz#4
Wird wohl eher schwer sein, da mein Explorer auch bei ausgeworfenem Laufwerk nur "auswerfen" im Kontextmenü anzeigt (kann aber auch an meinem Notebook liegen, habe gerade nichts anderes hier).
Zudem bekomme ich immer nur den Fehler "drive not ready", unabhängig davon ob das Laufwerk nur offen ist oder geschlossen und keine CD eingelegt.
Ich habe jedenfalls auf die Schnelle keine Möglichkeit gefunden zwischen "keine CD eingelegt" und "Laufwerk offen" zu unterscheiden :/
09/20/2006 14:58 neji#5
jo genau an dieser Stell hab ich mich auch gefragt, ob es überhaupt möglich ist, den status "offen" abzufragen
09/20/2006 19:15 emjay#6
es ist nicht möglich abzufragen ob das laufwerk geöffnet ist oder nicht (wofür auch, irgendwie überflüssig)

es ist (natürlich) möglich abzufragen ob eine cd eingelegt ist, in den meisten fällen sollte das schon ausreichen, ka was du genau vor hast

aus der windows sdk, evtl reicht dir das schon aus

Code:
BOOL GetVolumeInformation(

  LPCTSTR lpRootPathName,	// address of root directory of the file system 
  LPTSTR lpVolumeNameBuffer,	// address of name of the volume 
  DWORD nVolumeNameSize,	// length of lpVolumeNameBuffer 
  LPDWORD lpVolumeSerialNumber,	// address of volume serial number 
  LPDWORD lpMaximumComponentLength,	// address of system's maximum filename length
  LPDWORD lpFileSystemFlags,	// address of file system flags 
  LPTSTR lpFileSystemNameBuffer,	// address of name of file system 
  DWORD nFileSystemNameSize // length of lpFileSystemNameBuffer 
  );
09/22/2006 11:50 Flurex#7
Und wenn du mit dem Programm einfach den Eject Button simulierst?
Ich kenne mich da jetzt nicht so wahnsinnig aus, aber das muss doch funktionieren.
Dabei spielt es ja keine Rolle, ob das Laufwerk offen oder zu ist. ;)

Gruss Flurex
09/22/2006 16:31 neji#8
kenn mich mit der elektronik nicht aus, aber ich denke ja mal, dass da keine große software dahintersteht, wenn man den eject button drückt.
Und wenn man die Hardware direkt ansprechen muss, dann kann es sein dass man das für jedes Laufwerk neu machen muss !?
09/23/2006 15:24 rEdoX#9
Unter vista gehts [Only registered and activated users can see links. Click Here To Register...] und unter xp kannst du es vergessen :P