AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Notification wenn neues Laufwerk verfügbar/entfernt
Thema durchsuchen
Ansicht
Themen-Optionen

Notification wenn neues Laufwerk verfügbar/entfernt

Ein Thema von SleepyMaster · begonnen am 1. Jun 2005 · letzter Beitrag vom 2. Jun 2005
Antwort Antwort
Benutzerbild von SleepyMaster
SleepyMaster

Registriert seit: 18. Mai 2003
634 Beiträge
 
#1

Notification wenn neues Laufwerk verfügbar/entfernt

  Alt 1. Jun 2005, 22:00
Hi ihrs...

Wisst ihr wie ich mein Programm informieren lassen kann, wenn ein neues Laufwerk (E:/F:/G:/...) verfügbar ist oder entfernt wurde?!?

Vielen Dank für eure Hilfe
  Mit Zitat antworten Zitat
Benutzerbild von mh166
mh166

Registriert seit: 14. Nov 2004
Ort: Chemnitz
443 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

Re: Notification wenn neues Laufwerk verfügbar/entfernt

  Alt 1. Jun 2005, 23:53
Such mal im PSDK nach ner Message... ich glaub die hieß WM_DEVICECHANGE oder ähnlich. Da solltest du fündig werden. Außerdem glaub ich nicht, dass die Suche hier im Board keine Ergebnisse zu Tage fördert...

mfg, mh166
Tiefgründige Sätze unserer Zeit:
Zitat von Luckie:
Und diesen Token zur Laufzeit zu modifizieren würde bedeuten, dass du zur laufzeit das Token ändern musst.
  Mit Zitat antworten Zitat
Benutzerbild von SleepyMaster
SleepyMaster

Registriert seit: 18. Mai 2003
634 Beiträge
 
#3

Re: Notification wenn neues Laufwerk verfügbar/entfernt

  Alt 2. Jun 2005, 16:29
ok... thx...

habs so gelöst:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    procedure WMDeviceChange(var Msg: TMessage); message WM_DEVICECHANGE;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

const
  DBT_DEVICEARRIVAL = $8000;
  DBT_DEVICEREMOVECOMPLETE = $8004;
  DBT_DEVTYP_VOLUME = $00000002;
type
  PDEV_BROADCAST_VOLUME = ^DEV_BROADCAST_VOLUME;
  DEV_BROADCAST_VOLUME = record
    dbcv_size: DWORD;
    dbcv_devicetype: DWORD;
    dbcv_reserved: DWORD;
    dbcv_unitmask: DWORD;
    dbcv_flags: DWORD;
    end;
  PDevBroadcastHdr = ^DEV_BROADCAST_HDR;
  DEV_BROADCAST_HDR = packed record
    dbch_size: DWORD;
    dbch_devicetype: DWORD;
    dbch_reserved: DWORD;
  end;

function BitMaskToChar(BitMask: DWORD): char;
var
  i: integer;
  c: char;
begin
for i := 0 to 25 do
  begin
  if (BitMask and 1) = 1 then
    Result := Char(i + Ord('A'));
  BitMask := BitMask shr 1;
  end;
end;

procedure TForm1.WMDeviceChange(var Msg: TMessage);
begin
  if (Msg.wParam = DBT_DEVICEARRIVAL) or (Msg.wParam = DBT_DEVICEREMOVECOMPLETE) then
    if PDevBroadcastHdr(Msg.LParam).dbch_devicetype = DBT_DEVTYP_VOLUME then
      begin
      if Msg.wParam = DBT_DEVICEARRIVAL then
        Messagebox(0, 'Neues Ding...', pchar(BitMaskToChar(PDEV_BROADCAST_VOLUME(Msg.LParam)^.dbcv_unitmask)+''), 64);
      if Msg.wParam = DBT_DEVICEREMOVECOMPLETE then
        Messagebox(0, 'Ding wech...', pchar(BitMaskToChar(PDEV_BROADCAST_VOLUME(Msg.LParam)^.dbcv_unitmask)+''), 64);
      end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  dbv: DEV_BROADCAST_VOLUME;
begin
  ZeroMemory(@dbv, SizeOf(DEV_BROADCAST_VOLUME));
  dbv.dbcv_size := SizeOf(DEV_BROADCAST_VOLUME);
  dbv.dbcv_devicetype := DBT_DEVTYP_VOLUME;
  dbv.dbcv_reserved := 0;
  dbv.dbcv_unitmask := $FFFFFFFF;
  dbv.dbcv_flags := 0;
  RegisterDeviceNotification(Handle, @dbv, DEVICE_NOTIFY_WINDOW_HANDLE);
end;
Bin mir aber ned ganz sicher ob das alles so richtig uns "sauber" ist... vor allem bei dem FormCreate...
  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 06:50 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