Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 2 odgovora
  • 1.830 pregleda

Najnovija ↓

Detectovanje novih medija? 07.02.2009. u 19:32 · pre 215 meseci #1
Jel zna neko koji win message i kako treba da presretnem da bih uocio nove medije na PCu, tipa floppy, cd, flash drive?
Re: Detectovanje novih medija? 07.02.2009. u 22:38 · pre 215 meseci #2
Ovo sam koristio u jednom komercijalnom programu, radi kao sat.
Detektuje USB disk, u DriveLetter je slovo pod kojim se prijavio u sistem. Definicije tipova su prepisane iz JCL biblioteke.


Code:


  TForm1 = class(TForm)
  private
    procedure FOnDeviceChange(var Message: TMessage); message WM_DEVICECHANGE;
  public
  end;

implementation

type
  _DEV_BROADCAST_HDR = record
    dbch_size: DWORD;
    dbch_devicetype: DWORD;
    dbch_reserved: DWORD;
  end;
  {$EXTERNALSYM _DEV_BROADCAST_HDR}
  DEV_BROADCAST_HDR = _DEV_BROADCAST_HDR;
  {$EXTERNALSYM DEV_BROADCAST_HDR}
  PDEV_BROADCAST_HDR = ^DEV_BROADCAST_HDR;
  {$EXTERNALSYM PDEV_BROADCAST_HDR}
  TDevBroadcastHdr = DEV_BROADCAST_HDR;
  PDevBroadcastHdr = PDEV_BROADCAST_HDR;

  PDEV_BROADCAST_VOLUME = ^DEV_BROADCAST_VOLUME;
  {$EXTERNALSYM PDEV_BROADCAST_VOLUME}
  _DEV_BROADCAST_VOLUME = record
    dbcv_size: DWORD;
    dbcv_devicetype: DWORD;
    dbcv_reserved: DWORD;
    dbcv_unitmask: DWORD;
    dbcv_flags: WORD;
  end;
  {$EXTERNALSYM _DEV_BROADCAST_VOLUME}
  DEV_BROADCAST_VOLUME = _DEV_BROADCAST_VOLUME;
  {$EXTERNALSYM DEV_BROADCAST_VOLUME}
  TDevBroadcastVolume = DEV_BROADCAST_VOLUME;
  PDevBroadcastVolume = PDEV_BROADCAST_VOLUME;

procedure TForm1.FOnDeviceChange(var Message: TMessage);
var
  i: Integer;
  DriveLetter: Char;
begin
  inherited;
  if (Message.WParam = $8000) then
  begin
    if (DEV_BROADCAST_HDR(Pointer(Message.LParam)^).dbch_devicetype = $00000002) then
    begin
      i := 65 + Round(Log2(Extended(DEV_BROADCAST_VOLUME(Pointer(Message.LParam)^).dbcv_unitmask + 0.0)));
      DriveLetter := Chr(i);
      // ...
    end;
  end;
end;
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme