C WPF 檢測U盤插入,拔出。

2021-10-02 01:23:10 字數 3992 閱讀 1582

using system;

using system.collections.generic;

using system.io;

using system.linq;

using system.runtime.interopservices;

using system.text;

using system.threading.tasks;

using system.windows;

using system.windows.controls;

using system.windows.data;

using system.windows.documents;

using system.windows.input;

using system.windows.interop;

using system.windows.media;

using system.windows.media.imaging;

using system.windows.shapes;

namespace wpf_datagrid_rowdraganddrop

private

void

window_loaded

(object sender,

routedeventargs e)

}string panfu ="";

public

const

int wm_devicechange =

0x219

;//u盤插入後,os的底層會自動檢測到,然後向應用程式傳送「硬體裝置狀態改變「的訊息

public

const

int dbt_devicearrival =

0x8000

;//就是用來表示u盤可用的。乙個裝置或**已被插入一塊,現在可用。

public

const

int dbt_configchangecanceled =

0x0019

;//要求更改當前的配置(或取消停靠碼頭)已被取消。

public

const

int dbt_configchanged =

0x0018

;//當前的配置發生了變化,由於碼頭或取消固定。

public

const

int dbt_customevent =

0x8006

;//自定義的事件發生。 的windows nt 4.0和windows 95:此值不支援。

public

const

int dbt_devicequeryremove =

0x8001

;//審批要求刪除乙個裝置或**作品。任何應用程式也不能否認這一要求,並取消刪除。

public

const

int dbt_devicequeryremovefailed =

0x8002

;//請求刪除乙個裝置或**片已被取消。

public

const

int dbt_deviceremovecomplete =

0x8004

;//乙個裝置或**片已被刪除。

public

const

int dbt_deviceremovepending =

0x8003

;//乙個裝置或**一塊即將被刪除。不能否認的。

public

const

int dbt_devicetypespecific =

0x8005

;//乙個裝置特定事件發生。

public

const

int dbt_devnodes_changed =

0x0007

;//一種裝置已被新增到或從系統中刪除。

public

const

int dbt_querychangeconfig =

0x0017

;//許可是要求改變目前的配置(碼頭或取消固定)。

public

const

int dbt_userdefined =

0xffff

;//此訊息的含義是使用者定義的

public

const

uint generic_read =

0x80000000

;public

const

int generic_write =

0x40000000

;public

const

int file_share_read =

0x1;

public

const

int file_share_write =

0x2;

public

const

int ioctl_storage_eject_media =

0x2d4808

;private

intptr

wndproc

(intptr hwnd,

int msg,

intptr wparam,

intptr lparam,

refbool handled)

return

false;}

);break

;case dbt_deviceremovecomplete:

messagebox.

show

("u盤解除安裝");

break

;default

:break;}

}return intptr.zero;

}private

void

dirsearch

(string path)

foreach

(string d in directory.

getdirectories

(path))}

catch

(exception)}

private

void

button_click

(object sender,

routedeventargs e)

[dllimport

("kernel32.dll"

, setlasterror =

true

, charset = charset.auto)

]private

static

extern

intptr

createfile

(string lpfilename,

uint dwdesireaccess,

uint dwsharemode,

intptr securityattributes,

uint dwcreationdisposition,

uint dwflagsandattributes,

intptr htemplatefile);[

dllimport

("kernel32.dll"

, exactspelling =

true

, setlasterror =

true

, charset = charset.auto)

]private

static

extern

bool

deviceiocontrol

(intptr hdevice,

uint dwiocontrolcode,

intptr lpinbuffer,

uint ninbuffersize,

intptr lpoutbuffer,

uint noutbuffersize,

outuint lpbytesreturned,

);}}

U盤插入與拔出識別

在很多應用程式中,我們往往希望程式能夠自動檢測出即插即用型裝置的插入和拔出.在windows平台上,當pnp裝置插入或柭出時系統會發出wm devicechange訊息,應用程式只需截獲該訊息並作出相應的處理,就可以實現上述功能.下面我們以乙個mfc開發環境,寫出乙個能夠識別出u盤插入和拔出的程式例...

Delphi自動檢測U盤插入 拔出及獲取U盤碟符

unit unit1 inte ce uses windows,messages,sysutils,variants,classes,graphics,controls,forms,type tform1 class tform procedure button1click sender tobje...

C 監控U盤插入與拔出

using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.text using system.window...