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...