SLM arkadaşlar USB portu nasıl tanımlarım ve kotrol ederim?
(Detaylı anlatırsanız sevinirim)
cevaplarınız için TŞK
SLM arkadaşlar USB portu nasıl tanımlarım ve kotrol ederim?
(Detaylı anlatırsanız sevinirim)
cevaplarınız için TŞK
http://www.vbcode.info/viewtopic.php?t=20
Bu linkte bir USB uygulaması var...
Bir USB üniti ve bu ünit yardımıyla bilgisayara USB nin takılıp çıkarıldığını algılayan örnek program...
Bir nevi işini görür...
Bir noktayı kaçırdım...
Bu linki görebilmek için üye olmalısın...
Bu yüzden buraya kopyalıyorum...
unit U_Usb;
interface
uses
Windows, Messages, SysUtils, Classes, Forms;
type
PDevBroadcastHdr = ^DEV_BROADcast_HDR;
DEV_BROADcast_HDR = packed record
dbch_size: DWORD;
dbch_devicetype: DWORD;
dbch_reserved: DWORD;
end;
PDevBroadcastDeviceInterface = ^DEV_BROADcast_DEVICEINTERFACE;
DEV_BROADcast_DEVICEINTERFACE = record
dbcc_size: DWORD;
dbcc_devicetype: DWORD;
dbcc_reserved: DWORD;
dbcc_classguid: TGUID;
dbcc_name: array [0..255] of char;
end;
const
GUID_DEVINTERFACE_USB_DEVICE: TGUID =
'{A5DCBF10-6530-11D2-901F-00C04FB951ED}';
DBT_DEVICEARRIVAL = $8000; // system detected a new device
DBT_DEVICEREMOVECOMPLETE = $8004; // device is gone
DBT_DEVTYP_DEVICEINTERFACE = $00000005; // device interface class
type
TComponentUSB = class(TComponent)
private
FWindowHandle: HWND;
FOnUSBArrival: TNotifyEvent;
FOnUSBRemove: TNotifyEvent;
fDeviceName:String;
procedure WndProc(var Msg: TMessage);
function USBRegister: Boolean;
protected
procedure WMDeviceChange(var Msg: TMessage); dynamic;
public
property DeviceName:String read FDeviceName;
constructor create(AOwner: TComponent); override;
destructor Destroy; override;
published
property OnUSBArrival: TNotifyEvent read FOnUSBArrival write
FOnUSBArrival;
property OnUSBRemove: TNotifyEvent read FOnUSBRemove write FOnUSBRemove;
end;
procedure Register;
implementation
procedure Register; { add this in the implementation section }
begin
RegisterComponents('Samples', [TComponentUSB]);
end;
constructor TComponentUSB.create(AOwner: TComponent);
begin
inherited create(AOwner);
FWindowHandle := AllocateHWnd(WndProc);
USBRegister;
end;
destructor TComponentUSB.Destroy;
begin
DeallocateHWnd(FWindowHandle);
inherited Destroy;
end;
procedure TComponentUSB.WndProc(var Msg: TMessage);
begin
if (Msg.Msg = WM_DEVICECHANGE) then
begin
try
WMDeviceChange(Msg);
except
Application.HandleException(Self);
end;
end
else
Msg.Result := DefWindowProc(FWindowHandle, Msg.Msg, Msg.wParam,
Msg.lParam);
end;
procedure TComponentUSB.WMDeviceChange(var Msg: TMessage);
var
devType: Integer;
Datos: PDevBroadcastHdr;
begin
if (Msg.wParam = DBT_DEVICEARRIVAL) or (Msg.wParam =
DBT_DEVICEREMOVECOMPLETE) then
begin
Datos := PDevBroadcastHdr(Msg.lParam);
devType := Datos^.dbch_devicetype;
if devType = DBT_DEVTYP_DEVICEINTERFACE then
begin // USB Device
if Msg.wParam = DBT_DEVICEARRIVAL then
begin
if Assigned(FOnUSBArrival) then
FOnUSBArrival(Self);
end
else
begin
if Assigned(FOnUSBRemove) then
FOnUSBRemove(Self);
end;
end;
end;
end;
function TComponentUSB.USBRegister: Boolean;
var
dbi: DEV_BROADcast_DEVICEINTERFACE;
Size: Integer;
r: Pointer;
begin
Result := False;
Size := SizeOf(DEV_BROADcast_DEVICEINTERFACE);
ZeroMemory(@dbi, Size);
dbi.dbcc_size := Size;
dbi.dbcc_devicetype := DBT_DEVTYP_DEVICEINTERFACE;
dbi.dbcc_reserved := 0;
dbi.dbcc_classguid := GUID_DEVINTERFACE_USB_DEVICE;
dbi.dbcc_name := dbi.dbcc_name;
fDeviceName := String(dbi.dbcc_name);
r := RegisterDeviceNotification(FWindowHandle, @dbi,
DEVICE_NOTIFY_WINDOW_HANDLE
);
if Assigned(r) then Result := True;
end;
end.
bu componenti ister delphi idesine yukleyin ya da asagidaki gibi kullanin.
Kod:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,U_Usb, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Formcreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
usb:TComponentUSB;
procedure BellekCikti(Sender: TObject);
procedure BellekTakildi(Sender: TObject);
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.BellekCikti(Sender: TObject);
begin
ShowMessage('bellek çıktı');
end;
procedure TForm1.BellekTakildi(Sender: TObject);
begin
ShowMessage('bellek takıldı:');
end;
procedure TForm1.Formcreate(Sender: TObject);
begin
usb:=TComponentUSB.create(self);
usb.OnUSBArrival := BellekTakildi;
usb.OnUSBRemove := BellekCikti;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
FreeAndNil(usb);
end;
end.
ALINTIDIR...
Mrb arkadaşlar ben erzincan üniversitesi bilgisayar bölümünde okuduğum için delphide usb ye bağlı 3 veya 5 tane lad çalıştıracağım delphiye bağlı usb componentini bulamıyorum bana yardımcı olursanız sevinirimmm...
Çok Tşk ederimmm....