首页  编辑  

响应PNP消息

Tags: /超级猛料/API.Windows应用程序接口/消息和事件相关/   Date Created:

支持硬件的即插即用。

响应即插即用变化

type

TForm1 = class(TForm)

Button1: TButton;

private

{ Private declarations }

procedure WMDeviceChange(var Message: TMessage);

message WM_DEVICECHANGE;

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

const DBT_DEVICEARRIVAL = $8000;

const DBT_DEVICEQUERYREMOVE = $8001;

const DBT_DEVICEQUERYREMOVEFAILED = $8002;

const DBT_DEVICEREMOVEPENDING = $8003;

const DBT_DEVICEREMOVECOMPLETE = $8004;

const DBT_DEVICETYPESPECIFIC = $8005;

const DBT_CONFIGCHANGED = $0018;

procedure TForm1.WMDeviceChange(var Message: TMessage);

var

s : string;

begin

{Do Something here}

case Message.wParam of

DBT_DEVICEARRIVAL :

s := 'A device has been inserted and is now available';

DBT_DEVICEQUERYREMOVE: begin

s := 'Permission to remove a device is requested';

ShowMessage(s);

{True grants premission}

Message.Result := integer(true);

exit;

end;

DBT_DEVICEQUERYREMOVEFAILED :

s := 'Request to remove a device has been canceled';

DBT_DEVICEREMOVEPENDING :

s := 'Device is about to be removed';

DBT_DEVICEREMOVECOMPLETE :

s := 'Device has been removed';

DBT_DEVICETYPESPECIFIC :

s := 'Device-specific event';

DBT_CONFIGCHANGED :

s:= 'Current configuration has changed'

else s := 'Unknown Device Message';

end;

ShowMessage(s);

inherited;

end;