Program Pendeteksi Flashdisk Menggunakan Bahasa Pemrograman Delphi

Monday, November 06, 2017
Program Pendeteksi Flashdisk 
Mengunakan Bahasa Pemrograman Delphi


Flashdisk adalah media penyimanan paling populer saat ini karena bentuknya simple, sehingga tidak ribet untuk dibawa untuk berpergian kemana aja. 

Baca : Penyimpanana Data Online 


Nah untuk kali ini aku menjawab pertanyaan dari adek gue " bagaimana cara mendeteksi sebuah flashdisk? dalam windows" Nah aku akan Menjawabnya :
Aku ambil contoh pembuatan Program Pendeteksi Flashdisk dari bahasa Program Delphi, untuk menentukan tipe kejadian perubahan perangkat Misalnya DBT_DEVICEARRIVAL Yaitu Ketika Perangkat atau media baru saja terpasang dan siap di gunakan. atau DBT_DEVICE_REMOVECOMPLETE Ketika Perangkat atau media sukses dilepas. untuk lebih jelas langsung Kita coba yuk.

Langkah-langkahnya sebagai berikut :
1. Buat Proyek Baru Delphi 
2. Masukan Komponen Checkbox dan label dalm form. atur posising seperti gambar di bawah

3. ubah caption Checkbox1 menjadi "notify attached/removed USB Device
4. Selanjutnya masuk ke jendela kode. buat prosedur di bagian private declarations, lalu ketikan procedur lengkapnya di bawah implementantion.

Source Code Sebagai Berikut :



unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
  Label1: TLabel;
  CheckBox1: TCheckBox;
  private
    { Private declarations }
    procedure   WMDEVICECHANGE(var Msg: TMessage); message WM_DEVICECHANGE;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

// Device constants
const
  DBT_DEVICEARRIVAL          =  $00008000;
  DBT_DEVICEREMOVECOMPLETE   =  $00008004;
  DBT_DEVTYP_VOLUME          =  $00000002;

// Device structs
type
  _DEV_BROADCAST_HDR         =  packed record
     dbch_size:              DWORD;
     dbch_devicetype:        DWORD;
     dbch_reserved:          DWORD;
  end;
  DEV_BROADCAST_HDR          =  _DEV_BROADCAST_HDR;
  TDevBroadcastHeader        =  DEV_BROADCAST_HDR;
  PDevBroadcastHeader        =  ^TDevBroadcastHeader;

type
  _DEV_BROADCAST_VOLUME      =  packed record
     dbch_size:              DWORD;
     dbch_devicetype:        DWORD;
     dbch_reserved:          DWORD;
     dbcv_unitmask:          DWORD;
     dbcv_flags:             WORD;
  end;
  DEV_BROADCAST_VOLUME       =  _DEV_BROADCAST_VOLUME;
  TDevBroadcastVolume        =  DEV_BROADCAST_VOLUME;
  PDevBroadcastVolume        =  ^TDevBroadcastVolume;

implementation

{$R *.dfm}

procedure TForm1.WMDEVICECHANGE(var Msg: TMessage);
var  lpdbhHeader:   PDevBroadcastHeader;
     lpdbvData:     PDevBroadcastVolume;
     dwIndex:       Integer;
     lpszDrive:      String;
begin

  // Perform inherited
  inherited;

  // Get the device notification header
  lpdbhHeader:=PDevBroadcastHeader(Msg.lParam);

  // Handle the message
  lpszDrive:='Drive ';
  case Msg.WParam of
     DBT_DEVICEARRIVAL       :    {a USB drive was connected}
     begin
        if (lpdbhHeader^.dbch_devicetype = DBT_DEVTYP_VOLUME) then
        begin
           lpdbvData:=PDevBroadcastVolume(Msg.lParam);
           for dwIndex :=0 to 25 do
           begin
              if ((lpdbvData^.dbcv_unitmask shr dwIndex) = 1) then
              begin
                 lpszDrive:=lpszDrive+Chr(65+dwIndex)+':';
                 break;
              end;
           end;
           If CheckBox1.Checked Then Label1.Caption:=lpszDrive + ' terhubung';
        end;
     end;
     DBT_DEVICEREMOVECOMPLETE:    {a USB drive was removed}
     begin
        if (lpdbhHeader^.dbch_devicetype = DBT_DEVTYP_VOLUME) then
        begin
           lpdbvData:=PDevBroadcastVolume(Msg.lParam);
           for dwIndex:=0 to 25 do
           begin
              if ((lpdbvData^.dbcv_unitmask shr dwIndex) = 1) then
              begin
                 lpszDrive:=lpszDrive+Chr(65+dwIndex)+':';
                 break;
              end;
           end;
           If CheckBox1.Checked Then Label1.Caption:=lpszDrive + ' dilepas';
        end;
     end;
  end;
end;

end.


Penjelasan Code Diatas :

Pada baris ke 53 hingga ke-68 merupakan implementasi bagian sistem memproses message WM_DEVICECHANGE untuk Wparam DBT_DEVICE-ARRIVAL atau ketika  USB Flashdisk baru saja terpasang dan siap di gunakan.
Sedangn kan pada baris ke 69 hingga ke 84 di gunakan untuk memproses Wparam DBT_DEVICEREMOVALLCOMPLETE ketika USB Flashdisk Sukses di lepas.

5. Jalankan Project dengan mengklik tombol F9 di keyboard atau tombol RUN dilayar.


No comments:

Powered by Blogger.