【问题标题】:Detect drive mount event in c#在 C# 中检测驱动器安装事件
【发布时间】:2012-01-01 14:21:15
【问题描述】:

如何在将新驱动器添加到“我的电脑”时捕捉事件,最好是在 NTFS 驱动器上为某个驱动器创建新挂载点时?


我发现了这一点,但它不适用于已安装的文件夹:

 _eventWatcher = new ManagementEventWatcher("SELECT * FROM Win32_VolumeChangeEvent");

 _eventWatcher.EventArrived += (o, args) => 
     {switch(args.NewEvent["EventType"].ToString()[0])
         {
             case '2':
                 //mount
                 Debug.WriteLine(args.NewEvent["DriveName"]);
                 break;
             case '3':
                 //unmount
                 break;
         }
     };

 _eventWatcher.Start();

有什么想法吗?

【问题讨论】:

标签: c# winapi filesystems mount drive


【解决方案1】:

如果你有一个表单,你可以重写它的 WndProc 方法来捕捉 Eugene 提到的 WM_DEVICECHANGE 消息:

private const int WM_DEVICECHANGE = 0x219;

protected override void WndProc(ref Message m)
{
    base.WndProc(m);

    if (m.Msg == WM_DEVICECHANGE)
    {
        // Check m.wParam to see exactly what happened
    }
}

【讨论】:

猜你喜欢
  • 2011-12-31
  • 2012-12-04
  • 1970-01-01
  • 2013-09-07
  • 1970-01-01
  • 1970-01-01
  • 2021-09-01
  • 1970-01-01
  • 2015-04-28
相关资源
最近更新 更多