728x90
..
private const int DBT_DEVICEARRIVAL = 0x8000;
private const int DBT_DEVICEREMOVECOMPLETE = 0x8004;
private const int DBT_DEVTYP_VOLUME = 0x00000002;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace UsbDriveDetector
{
public partial class Form1 : Form
{
private const int WM_DEVICECHANGE = 0x219;
private const int DBT_DEVICEARRIVAL = 0x8000;
private const int DBT_DEVICEREMOVECOMPLETE = 0x8004;
private const int DBT_DEVTYP_VOLUME = 0x00000002;
public Form1()
{
InitializeComponent();
}
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
switch(m.Msg)
{
case WM_DEVICECHANGE:
switch((int)m.WParam)
{
case DBT_DEVICEARRIVAL:
listBox1.Items.Add("New Device Arrived");
int devType = Marshal.ReadInt32(m.LParam, 4);
if(devType == DBT_DEVTYP_VOLUME)
{
DevBroadcastVolume vol;
vol = (DevBroadcastVolume)
Marshal.PtrToStructure(m.LParam,
typeof (DevBroadcastVolume));
listBox1.Items.Add("Mask is " + vol.Mask);
}
break;
case DBT_DEVICEREMOVECOMPLETE:
listBox1.Items.Add("Device Removed");
break;
}
break;
}
}
}
}
'개발언어 > C#' 카테고리의 다른 글
[C#] Task.Wait() vs await Task (0) | 2023.05.12 |
---|---|
[C#] 비동기 async / await 키워드 (0) | 2023.05.12 |
[C#/WINFORM] Control 클래스 : ProcessCmdKey 메소드를 사용해 CTRL, SHIFT, ALT 조합 키 입력받기 (1) | 2023.04.17 |
[C#] 도구 상자 항목 ' ' 을(를) 로드하지 못했습니다. 해당 항목은 도구 상자에서 제거됩니다. / 유저 컨트롤 (0) | 2023.04.12 |
[C#] 투명배경 RichTextBox (0) | 2023.04.11 |