AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Benachrichtigug beim einlegen einer CD
Thema durchsuchen
Ansicht
Themen-Optionen

Benachrichtigug beim einlegen einer CD

Ein Thema von geisi · begonnen am 17. Okt 2005 · letzter Beitrag vom 24. Okt 2005
Antwort Antwort
geisi

Registriert seit: 19. Sep 2003
449 Beiträge
 
Delphi 6 Professional
 
#1

Benachrichtigug beim einlegen einer CD

  Alt 17. Okt 2005, 18:35
ich beziehe meine daten aus einem bestimmten grund von einer cd. wenn die cd aber nicht eingelegt ist, gebe ich eine meldung aus. ich möchte, aber dass mein programm benachrichtigt wird, wenn eine cd eingelegt wurde.

funktioniert das? oder muss ich mit einem timer die ganze zeit abfragen ob eine cd eingelegt wurde?
mfg geisi
  Mit Zitat antworten Zitat
geisi

Registriert seit: 19. Sep 2003
449 Beiträge
 
Delphi 6 Professional
 
#2

Re: Benachrichtigug beim einlegen einer CD

  Alt 17. Okt 2005, 19:37
geht das mit usb-sticks?
mfg geisi
  Mit Zitat antworten Zitat
geisi

Registriert seit: 19. Sep 2003
449 Beiträge
 
Delphi 6 Professional
 
#3

Re: Benachrichtigug beim einlegen einer CD

  Alt 17. Okt 2005, 20:53
gibt es irgendeinen anderen weg, als die ständige abfrage in einem timer?
mfg geisi
  Mit Zitat antworten Zitat
BenjaminH

Registriert seit: 14. Okt 2004
Ort: Freiburg im Breisgau
713 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Benachrichtigug beim einlegen einer CD

  Alt 17. Okt 2005, 20:54
Bitte hör auf zu Pushen und benutze die Forensuche, ich bin mir sicher, dass es das schon gab!!
Benjamin
  Mit Zitat antworten Zitat
geisi

Registriert seit: 19. Sep 2003
449 Beiträge
 
Delphi 6 Professional
 
#5

Re: Benachrichtigug beim einlegen einer CD

  Alt 23. Okt 2005, 16:38
kann mir hier keiner einen tipp geben?
mfg geisi
  Mit Zitat antworten Zitat
Van HelF

Registriert seit: 24. Okt 2005
Ort: Karlsbrunn
195 Beiträge
 
Delphi 7 Personal
 
#6

Re: Benachrichtigug beim einlegen einer CD

  Alt 24. Okt 2005, 14:46
Wer sucht der findet:

Wenn eine CD ins Laufwerk einlegt oder eine CD herausgenommen wird, wird die Botschaft WM_DeviceChange an alle Anwendungen geschickt.
Über den Parameter WParam kann bestimmt werden welche Aktion durchgeführt wurde. Die Botschaft wird nur verschickt, wenn die 'Automatische Benachrichtigung bei Wechsel' aktiv ist.

In dem Botschaftsrecord sind weitere Informationen zum Datenträger-Wechsel enthalten. So lässt sich über die Variable "lpdbv.dbcv_unitmask" ermitteln, auf welches Laufwerk sich der Wechsel bezieht.

Delphi-Quellcode:
private
 procedure WMDeviceChange(var Msg: TMessage); message WM_DEVICECHANGE;

function GetFirstDrive(UnitMask: DWORD): Char;
var
I: Char;
begin
Result:=#0;
for I:='Ato 'Zdo
begin
  if (UnitMask and 1) = 1 then
  begin
    Result:=I;
    break;
  end;
  UnitMask:=UnitMask Shr 1;
end;
end;

procedure TForm1.WMDeviceChange(var Msg: TMessage);
var
lpdb: PDevBroadcastHdr;
lpdbv: PDevBroadcastVolume;
begin
lpdb:=PDevBroadcastHdr(Msg.lParam);
case Msg.wParam of
  //Datenträger eingelegt
  DBT_DeviceArrival:
    //Prüfen, ob es sich um eine DVD oder CD handelt.
    if lpdb^.dbch_devicetype = DBT_DevTyp_Volume then
    begin
      lpdbv:=PDevBroadcastVolume(Msg.lParam);
      if lpdbv.dbcv_flags = DBTF_Media then
        Label1.Caption:=Format('Datenträger in Laufwerk %s eingelegt.',
                               [GetFirstDrive(lpdbv.dbcv_unitmask)]);
    end;
  //Datenträger entfernt
  DBT_DeviceRemoveComplete:
    //Prüfen, ob es sich um eine DVD oder CD handelt.
    if lpdb^.dbch_devicetype = DBT_DevTyp_Volume then
    begin
      lpdbv:=PDevBroadcastVolume(Msg.lParam);
      if lpdbv.dbcv_flags = DBTF_Media then
        Label1.Caption:=Format('Datenträger aus Laufwerk %s entfernt.',
                               [GetFirstDrive(lpdbv.dbcv_unitmask)]);
    end;

end; //case
end;
Da brauchst du auch keine timer dafür.
  Mit Zitat antworten Zitat
geisi

Registriert seit: 19. Sep 2003
449 Beiträge
 
Delphi 6 Professional
 
#7

Re: Benachrichtigug beim einlegen einer CD

  Alt 24. Okt 2005, 20:16
Danke! Danke! Danke!

Dachte schon, mir antwortet keiner mehr! Vielen Dank! Werde es gleich ausprobieren!
Hätte nur gern gewusst, ob man das auf usb-sticks auch anwenden kann!

mfg geisi
mfg geisi
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#8

Re: Benachrichtigug beim einlegen einer CD

  Alt 24. Okt 2005, 21:09
MSDN sagt zu dem Thema:

Zitat von MSDN:
he WM_DEVICECHANGE device message notifies an application of a change to the hardware configuration of a device or the computer.
Die Message wird also auch gesendet, wenn du einen USB Stick einsteckst, weil das ja "a change to the hardware configuration of a device" ist.

Man liest sich, Stanlay
  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 14:44 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