Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi CDRom Schublade geöffnet?!? (https://www.delphipraxis.net/28785-cdrom-schublade-geoeffnet.html)

Hellsgore 30. Aug 2004 09:42


CDRom Schublade geöffnet?!?
 
Servus,

habe ein kleines Problem.... Ich öffne und schließe ein CDROM mit "mciSendCommand" Parameter: MCI_OPEN, MCI_SET, etc. Nun möchte ich aber gerne wissen ob die Schublade schon geöffnet ist. Es gibt doch bestimmt eine Möglichkeit dies herauszufinden doch leider bin ich noch auf keine Lösung gestoßen. :roll:

Das Forum habe ich schon durchstöbert....

Für Hinweise, Anregungen und jede Art von Hilfe bin ich sehr dankbar...


*winke*
Hellsgore

franktron 30. Aug 2004 09:48

Re: CDRom Schublade geöffnet?!?
 
Ich würd mal sagen nein sonst würde Windows wohl nicht ab und zu gucken ob eine CD im Laufwerk ist.

FastJack2 30. Aug 2004 10:31

Re: CDRom Schublade geöffnet?!?
 
Hy.

IFAIC müsstest du dazu die windows-API-Funktion MSDN-Library durchsuchenDeviceIoControl benutzen ... musste mal die MSDN durchwühlen ...

[edit]
was auch noch in Frage kommt ist
mciSendCommand
... bin mir dabei aber nicht so sicher ...
[/edit]

greetz
-FastJack2

OregonGhost 30. Aug 2004 10:59

Re: CDRom Schublade geöffnet?!?
 
Du könntest mal mit der WMI-Klasse Win32_LogicalDisk rumspielen. Diese enthält zum Beispiel die Parameter Access und Availability. Möglicherweise kannst du anhand eines dieser Zustände erkennen, ob die Schiebe offen ist (z.B. Access steht auf Unknown).
Hinweise zur Benutzung findest du im MSDN oder mal googeln.

Nothine 5. Sep 2004 18:29

Re: CDRom Schublade geöffnet?!?
 
hi, hatte das selbe problem, hab ma bisschen rumgeguckt, folgende funktion gibt, solang das cd-laufwerk auf ist, in jedem fall False zurück:
Delphi-Quellcode:
function IsDriveReady(ADriveChar: Char): Boolean;
var OEM: Cardinal;
    DW1,DW2: DWORD;
begin
  Oem := SetErrorMode(SEM_FAILCRITICALERRORS); //keine Meldung a lá "Bitte CD einlegen"
  Result := GetVolumeInformation(PCHAR(ADriveChar+':\'),nil,0,nil,DW1,DW2,nil,0);
  SetErrorMode(Oem);
end;
bringt dir natürlich nur was wenn du wie ich, nach dem öffnen, schauen willst wann das laufwerk wieder zugemacht worden ist...

//Edit: sch**** ! hab grad gemerkt das die funktion auch false zurückgibt wenn keine CD im laufwerk ist :wall:

endeffects 6. Sep 2004 11:04

Re: CDRom Schublade geöffnet?!?
 
wenn auch wenig hilfreich, aber so könntest du das cdrom
mit hilfe von vb bzw. javascript öffnen:

Code:
<SCRIPT language=VBScript>
<!--

Set oWMP = CreateObject("WMPlayer.OCX.7" )
Set colCDROMs = oWMP.cdromCollection

if colCDROMs.Count >= 1 then
   For i = 0 to colCDROMs.Count - 1
      colCDROMs.Item(i).Eject
   Next ' cdrom
End If

-->
</SCRIPT>


<script language="JavaScript">
   <!--
      // Access the Windows Media Player CD-ROM collection
      var oWMP = new ActiveXObject("WMPlayer.OCX.7");
      var colCDROMS = oWMP.cdromCollection;
      
      // If the computer has at least one CD-ROM drive...
      if (colCDROMS.count >= 1) {
         // ...eject each one
         for (i = 0; i > colCDROMS.count; ++i)
            colCDROMS.item(i).eject();
      }
   -->
</script>

OregonGhost 6. Sep 2004 12:15

Re: CDRom Schublade geöffnet?!?
 
@Hellsgore:
Wo du du sowieso MCI benutzt...
1. Warum musst du wissen, ob's offen ist? Was passiert, wenn's offen ist und du es nochmal öffnest? Bleibt es dann auf oder geht's wieder zu?
2. Wenn du MCI_STATUS verschickst und als Flag MCI_STATUS_MODE übergibst, dann wird dir gegebenenfalls MCI_MODE_OPEN zurückgegeben. Das sollte eigentlich die Information sein, die du suchst.


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