Написать программу, которая будет отслеживать подключение USB-устройств - C#
Формулировка задачи:
Хочу написать программу которая будет отслеживать подключение usb устройств(флешек хардов и д.р. съемных накопителей). В общем суть проги пока что проста, подключается устройство и в командной строке или в форме пишется текст что подключилось такое то устройство и писался путь устройства. Можете помочь в написании такой программы, любые советы, статью приму в помощь.И попутный вопрос, возможна ли такая реализация на c# или придется все же писать на с\с++?
Решение задачи: «Написать программу, которая будет отслеживать подключение USB-устройств»
textual
Листинг программы
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
if (m.Msg == WM_DEVICECHANGE)
{
switch (m.WParam.ToInt32())
{
case DBT_DEVICEARRIVAL:
DEV_BROADCAST_HDR dbhARRIVAL = (DEV_BROADCAST_HDR)Marshal.PtrToStructure(m.LParam, typeof(DEV_BROADCAST_HDR));
if (dbhARRIVAL.dbch_devicetype == DBT_DEVTYP_VOLUME)
{
DEV_BROADCAST_VOLUME dbv = (DEV_BROADCAST_VOLUME)Marshal.PtrToStructure(m.LParam, typeof(DEV_BROADCAST_VOLUME));
BitArray bArray = new BitArray(new byte[]
{
(byte)(dbv.dbcv_unitmask & 0x00FF),
(byte)((dbv.dbcv_unitmask & 0xFF00) >> 8),
(byte)((dbv.dbcv_unitmask & 0xFF0000) >> 16),
(byte)((dbv.dbcv_unitmask & 0xFF000000) >> 24)
});
int DriveLetter = Char.ConvertToUtf32("A", 0);
for (int i = 0; i < bArray.Length; i++)
{
if (bArray.Get(i))
Connect(Char.ConvertFromUtf32(DriveLetter));
DriveLetter += 1;
}
}
break;