AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wird auf CD-Rom zugegriffen

Offene Frage von "VizeTE"
Ein Thema von VizeTE · begonnen am 6. Apr 2007 · letzter Beitrag vom 7. Apr 2007
Antwort Antwort
VizeTE

Registriert seit: 31. Dez 2002
178 Beiträge
 
Delphi 5 Enterprise
 
#1

Wird auf CD-Rom zugegriffen

  Alt 6. Apr 2007, 19:47
Hallo,

ich möchte herausfinden ob z.Z. auf das CD-Rom zugegriffen wird.
Zum hintergrund: Wenn ich eine DVD am Rechner ansehe dann soll mein Programm erkennen, dass die DVD am Ende angekommen ist. Ich denke das Laufwerk wird dann nicht mehr vom Abspielprogramm verwendet. Dann soll mein Programm Dinge tun.

Ich habe versucht was zur Statusabfrage herauszufinden. In Beiträgen wird oft auf die Funktionen DeviceIOControl und mciSendString verwiesen. Dabei ging es aber immer um die Abfrage ob das Laufwerk geöffnet oder geschlossen ist.

Hat das jemand schon mal gemacht? Oder hat noch jemand eine andere Herangehensweise?


Vielen Dank schon mal und Frohe Oster
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

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

Re: Wird auf CD-Rom zugegriffen

  Alt 7. Apr 2007, 00:46
Zitat von VizeTE:
Ich habe versucht was zur Statusabfrage herauszufinden. In Beiträgen wird oft auf die Funktionen DeviceIOControl und mciSendString verwiesen. Dabei ging es aber immer um die Abfrage ob das Laufwerk geöffnet oder geschlossen ist.
Ob ein Kaufwerk geöffnet oder geschlossen ist, kannst Du im fünften Beitrag dieses Threads sehen. Dafür sind Schreib-/Brennrechte erforderlich.

Die Prüfung, ob auf die CD/DVD zugegriffen werden kann, kannst Du mit CreateFile erledigen. Ob auf eine eingelegte CD/DVD zugegriffen werden kann, kann man mit DeviceIOControl prüfen. Für NT, 2000 und XP zum Beispiel
Delphi-Quellcode:
...
uses
  Windows, SysUtils;
...

function Drive_Access (const Drive: Char; var Status: Integer) : Boolean;
const
  IOCTL_CDROM_CHECK_VERIFY = 149504;
var
  DrivewHandle : THandle;
  nb : DWord;
begin
  Result := False;

  DriveHandle := CreateFile(PChar('\\.\' + Drive + ':'),
                            GENERIC_READ,
                            FILE_SHARE_READ,
                            NIL,
                            OPEN_EXISTING,
                            FILE_ATTRIBUTE_NORMAL or FILE_FLAG_NO_BUFFERING,
                            0);

  nb := 0;

  if DriveHandle <> INVALID_HANDLE_VALUE
  then
    Result := DeviceIOControl(DriveHandle,
                             IOCTL_CDROM_CHECK_VERIFY,
                             NIL,
                             0,
                             NIL,
                             0,
                             nb,
                             NIL);
 
  Status := GetLastError;

  CloseHandle(DriveHandle);
end;
Anstelle von GetLastError kann man sich auch den entsprechenden String holen. Die Function funktioniert auch mit eingeschränkten Rechten da keine Schreib-/Brennrechte benötigt werden.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
VizeTE

Registriert seit: 31. Dez 2002
178 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: Wird auf CD-Rom zugegriffen

  Alt 7. Apr 2007, 10:52
Erstmal Danke für die Mühe aber mir gings darum herauszufinden ob auf das Laufwerkzugegriffen wird
(von irgendeinen anderen Programm)
und nicht ob ich die Möglichkeit habe auf das Laufwerk zuzugreifen.
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

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

Re: Wird auf CD-Rom zugegriffen

  Alt 7. Apr 2007, 15:59
Zitat von VizeTE:
... mir gings darum herauszufinden ob auf das Laufwerkzugegriffen wird ...
Wenn das DriveHandle ungültig ist oder DeviceIOControl den Wert False zurück gibt ist GetLastError ungleich 0. Zu diesem Wert kann man sich auch einen String holen (habe leider keine entsprechende Function parat). Dieser Wert/String könnte zum Beispiel aussagen, dass das Laufwerk gerade von einem anderen Prozess verwendet wird.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:40 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