Including multiple USB flash drives.
# Region USB device check start <br/> // ========================== ========================================================== ==========================< br/> // search the USB device </P> <p> Public const int wm_devicechange = 0x219; <br/> Public const int dbt_devicearrival = 0x8000; <br/> Public const int dbt_configchangecanceled = 0x0019; <br/> Public const int dbt_configchanged = 0x0018; <br/> Public const int dbt_customeve Nt = 0x8006; <br/> Public const int dbt_devicequeryremove = 0x8001; <br/> Public const int dbt_devicequeryremovefailed = 0x8002; <br/> Public const int dbt_deviceremovecomplete = 0x8004; <br/> Public const int dbt_deviceremovepending = 0x8003; <br/> Public const int dbt_devicetypespecific = 0x8005; <br/> Public const int dbt_devnodes_changed = 0x0007; <br/> Public const int dbt_querychangeconfig = 0x0017; <br/> Public const int dbt_userdefined = 0 xFFFF; </P> <p> Public const int dbt_devtyp_volume = 0x00000002; </P> <p> [structlayout (layoutkind. sequential)] <br/> public struct dev_broadcast_volume <br/> {<br/> Public int dbcv_size; <br/> Public int dbcv_devicetype; <br/> Public int dbcv_reserved; <br/> Public int dbcv_unitmask; <br/>}</P> <p> protected override void wndproc (ref message m) <br/ >{< Br/> If (M. MSG = wm_devicechange) <br/>{< br/> switch (M. wparam. toint32 () <br/>{< br/> case wm_devicechange: <br/> break; <br/> case dbt_devicearrival: // U disk upload <br/> driveinfo [] S = driveinfo. getdrives (); </P> <p> foreach (driveinfo drive in S) <br/>{< br/> If (drive. drivetype = drivetype. removable) <br/>{< br/> console. writeline ("========================================== ================== "); <Br/> console. writeline (" the U disk in!, Name: "+ drive. name. tostring (); <br/> break; <br/>}< br/> console. writeline ("========================================== ============== "); <br/> break; <br/> case dbt_configchangecanceled: <br/> break; <br/> case dbt_configchanged: <br/> break; <br/> case dbt_customevent: <br/> break; <br/> case dbt_devicequeryremove: <br/> break; <br/> case dbt_devicequeryremovefailed: <br/> break; <br/> case Dbt_deviceremovecomplete: // U disk is out <br/> driveinfo [] I = driveinfo. getdrives (); </P> <p> foreach (driveinfo drinfo in I) <br/>{< br/> int devtype = marshal. readint32 (M. lparam, 4); </P> <p> If (devtype = dbt_devtyp_volume) <br/>{< br/> dev_broadcast_volume vol; <br/> Vol = (dev_broadcast_volume) marshal. ptrtostructure (M. lparam, typeof (dev_broadcast_volume); <br/> string id = vol. dbcv_unitmask. Tostring ("X"); <br/> console. writeline (IO (ID) + ": U disk out! "); <Br/>}</P> <p> break; <br/> case dbt_deviceremovepending: <br/> break; <br/> case dbt_devicetypespecific: <br/> break; <br/> case dbt_devnodes_changed: <br/> break; <br/> case dbt_querychangeconfig: <br/> break; <br/> case dbt_userdefined: <br/> break; <br/> default: <br/> break; </P> <p >}< br/> base. wndproc (ref m); <br/>}</P> <p> Public String io (string ff) <br/>{< br/> string value = ""; <br/> switch (FF) <br/> {<br/> case "1": <br/> value = "A:"; <br/> break; <br/> case "2": <br/> value = "B:"; <br/> break; <br/> case "4 ": <br/> value = "C:"; <br/> break; <br/> case "8": <br/> value = "D :"; <br/> break; <br/> case "10": <br/> value = "E:"; <br/> break; <br/> case "20": <br/> value = "F:"; <br/> break; <br/> case "40 ": <br/> value = "G:"; <br/> break; <br/> case "80": <br/> value = "H :"; <br/> break; <br/> case "100": <br/> value = "I:"; <br/> break; <br/> case "200": <br/> value = "J:"; <br/> break; <br/> case "400 ": <br/> value = "K:"; <br/> break; <br/> case "800": <br/> value = "L :"; <br/> break; <br/> case "1000": <br/> value = "M:"; <br/> break; <br/> case "2000": <br/> value = "N:"; <br/> break; <br/> case "4000 ": <br/> value = "O:"; <br/> break; <br/> case "8000": <br/> value = "P :"; <br/> break; <br/> case "10000": <br/> value = "Q:"; <br/> break; <br/> case "20000": <br/> value = "R:"; <br/> break; <br/> case "40000 ": <br/> value = "s:"; <br/> break; <br/> case "80000": <br/> value = "T :"; <br/> break; <br/> case "100000": <br/> value = "u:"; <br/> break; <br/> case "200000": <br/> value = "V:"; <br/> break; <br/> case "400000 ": <br/> value = "W:"; <br/> break; <br/> case "800000": <br/> value = "X :"; <br/> break; <br/> case "1000000": <br/> value = "Y:"; <br/> break; <br/> case "2000000": <br/> value = "Z:"; <br/> break; <br/> default: break; <br/>}< br/> return value; <br/>}</P> <p> # endregion USB device check End