我想在我的应用程序中检测 USB 驱动器是插入还是拔出。
我搜索了很多关于它的内容,实际上找到了很多答案,但没有一个完全符合我的要求。我发现一个可以完美运行并在插入或拔出驱动器时发出消息但使用WndProc的程序,这是一个非常长的过程,特别是对于对它的知识为零的我来说很难理解,但这不是主要问题. 我用WndProc发现的主要问题是它不能做一些我想做的功能,而WMI可以做这些。我还找到了WMI解决方案,它可以在插入驱动器时检测到驱动器,但在拔出设备时无法检测到这对我的程序非常重要。我找到了另一个似乎可行的解决方案,但它是在 C# 代码中,我试图将它转换为 VB.Net,但是当我进入该 C# 代码的代码行 4 时未能这样做(稍后我将在问题中添加以下)。
部分帮助我的解决方案的链接:
- WndProc - www.vbforfree.com
完美检测驱动器插入和拔出事件。
- WMI 解决方案 Vb.Net - www.vb-tips.com
插入驱动器但无法检测驱动器是否已拔出时可以完美运行。
- WMI 解决方案 C# - stackoverflow.com
似乎可以工作,但无法将其转换为 Vb.Net
我猜可能有用的 C# 代码:
using System.Management;
ManagementEventWatcher watcher = new ManagementEventWatcher();
WqlEventQuery query = new WqlEventQuery("SELECT * FROM Win32_VolumeChangeEvent WHERE EventType = 2");
//I am stuck from the line below this
watcher.EventArrived += new EventArrivedEventHandler(watcher_EventArrived);
watcher.Query = query;
watcher.Start();
watcher.WaitForNextEvent();