Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Detectovanje novih medija?

[es] :: Pascal / Delphi / Kylix :: Detectovanje novih medija?

[ Pregleda: 1358 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

anon68680

Član broj: 68680
Poruke: 528
93.87.140.*



+14 Profil

icon Detectovanje novih medija?07.02.2009. u 18:32 - pre 185 meseci
Jel zna neko koji win message i kako treba da presretnem da bih uocio nove medije na PCu, tipa floppy, cd, flash drive?
 
Odgovor na temu

obucina

Član broj: 38191
Poruke: 723

Jabber: obucina


+7 Profil

icon Re: Detectovanje novih medija?07.02.2009. u 21:38 - pre 185 meseci
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;
 
Odgovor na temu

anon68680

Član broj: 68680
Poruke: 528
93.87.140.*



+14 Profil

icon Re: Detectovanje novih medija?08.02.2009. u 15:45 - pre 185 meseci
Zahvaljujem, radi savrseno :)
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Detectovanje novih medija?

[ Pregleda: 1358 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.