Thema: Delphi neues Laufwerk erkennen

Einzelnen Beitrag anzeigen

NeoXan
(Gast)

n/a Beiträge
 
#4

Re: neues Laufwerk erkennen

  Alt 25. Dez 2005, 01:37
Ich habe zig Prozeduren ausprobiert...keine jedoch erfolgreich. Es wird mir angezeigt, wenn ein Laufwerk dazu kommt bzw. entfernt wird, jedoch bräuchte ich den Laufwerksbuchstaben oder ähnliches?

eine Beispiel Prozedur aus dem Forum übernommen:
Delphi-Quellcode:
procedure TfrmMain.WMDeviceChange(var Msg: TMessage);
type PDevBroadcastHdr = ^TDevBroadcastHdr;
TDevBroadcastHdr = packed record
dbcd_size, dbcd_devicetype, dbcd_reserved: DWORD; end;
type PDevBroadcastVolume = ^TDevBroadcastVolume;
TDevBroadcastVolume = packed record
dbcv_size, dbcv_devicetype, dbcv_reserved, dbcv_unitmask: DWORD;
dbcv_flags: Word; end;
function GetDrive(pDBVol: PDevBroadcastVolume): string;
var i: Byte; Maske: DWORD;
begin
if (pDBVol^.dbcv_flags and $0001) = $0001 then
begin
Maske := pDBVol^.dbcv_unitmask;
for i := 0 to 25 do
begin
  if (Maske and 1) = 1 then
  Result := Char(i + Ord('A')) + ': ';
  Maske := Maske shr 1;
end;
end;
end;
var Drive: String;
begin
case Msg.wParam of
$8000:
  if PDevBroadcastHdr(Msg.lParam)^.dbcd_devicetype = $0002 then
   ShowMessage('Datenträger in Laufwerk '+GetDrive(PDevBroadcastVolume(Msg.lParam))+'eingelegt');
$8004:
  if PDevBroadcastHdr(Msg.lParam)^.dbcd_devicetype = $0002 then
  begin
   Drive := GetDrive(PDevBroadcastVolume(Msg.lParam));
   ShowMessage('Datenträger aus Laufwerk '+Drive+'entfernt');
   if not(Drive = '') and (Drive[1] = ExtractFilePath(ParamStr(0))[1]) then Close;
  end;
end;
end;
[Drive] ist leer...Msg.lParam liefert eine mehrstellige Zahl.
  Mit Zitat antworten Zitat