Thema: Delphi CD-Laufwerkslade offen?

Einzelnen Beitrag anzeigen

Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#1

CD-Laufwerkslade offen?

  Alt 25. Nov 2006, 17:03
Ich habe viele Seiten mit der Frage gefunden, wie man in Delphi feststellen kann, ob die Laufwerkslade geöffnet oder geschlossen ist. Ausser in der BassCD.Dll habe ich keine nutzbare Funktion gefunden.

Unter Linux soll das funktionieren:
Zitat:
/* open device */
fd = open(device, O_RDONLY | O_NONBLOCK);
if (fd < 0) {
fprintf (stderr, "%s: open failed for `%s': %s\n",
program, device, strerror (errno));
exit (1);
}

/* Check CD player status */

printf ("Drive status: ");
status = ioctl (fd, CDROM_DRIVE_STATUS, CDSL_CURRENT);
if (status<0) {
perror(" CDROM_DRIVE_STATUS");
} else switch(status) {
case CDS_DISC_OK:
printf ("Ready.\n");
break;
case CDS_TRAY_OPEN:
printf ("Tray Open.\n");
break;
case CDS_DRIVE_NOT_READY:
printf ("Drive Not Ready.\n");
break;
default:
printf ("This Should not happen!\n");
break;
}
Könnte man den ioctl-Befehl übersetzen und hoffen, dass die Funktion unter Windows existiert bzw herausfinden wie es in der BassCD.Dll funktioniert?

Als Definitionen habe ich bisher gefunden:
Zitat:
#define CDROMEJECT 0x5309 /* Ejects the cdrom media */
#define CDROMCLOSETRAY 0x5319 /* Reverse of CDROMEJECT */
#define CDROM_DRIVE_STATUS 0x5326 /* Get tray position, etc. */

#define CDS_NO_INFO 0 /* if not implemented */
#define CDS_NO_DISC 1
#define CDS_TRAY_OPEN 2
#define CDS_DRIVE_NOT_READY 3
#define CDS_DISC_OK 4
Die blosse Übernahme der Konstante funktioniert natürlich nicht.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat