Program Pendeteksi Flashdisk Menggunakan Bahasa Pemrograman Delphi
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: