检测到 USB C# 时执行一些操作

本文关键字:操作 执行 USB 检测 | 更新日期: 2023-09-27 18:35:15

我一直在开发一个应用程序,我想检测USB设备(大容量存储),现在我已经完成了,但我需要做的是捕获该消息并且不要将其传递给Windows。 我想问一个密码,如果可以的话,那么我想将消息传递给Windows,否则丢弃它,,,我怎样才能做到这一点,,,>

protected override void WndProc(ref Message m)
{
switch(m.Msg)
{
case Win32.WM_DEVICECHANGE: OnDeviceChange(ref m); break;
}
base.WndProc (ref m);
}
void OnDeviceChange(ref Message msg)
{
int wParam = (int)msg.WParam;
if (wParam == Win32.DBT_DEVICEARRIVAL)
{
    label1.Text = "Arrival";
    //MessageBox.Show("" + wParam);
    //msg = Message.Create(new IntPtr(),1,new IntPtr(),new IntPtr());
}
else if (wParam == Win32.DBT_DEVICEREMOVECOMPLETE) label1.Text =
 "Remove";
}

检测到 USB C# 时执行一些操作

您无法阻止 Windows 检测硬件,除非您的软件在环 0(或 1,不记得)保护级别下作为低级别应用程序运行。

这只能通过低级编程(C,ASM)来实现,而不是C#。IL 语言永远无法做你想做的事情。

无论如何,您正在做的事情只不过是将消息跳过到窗体的基类,而不是更多。无论如何,无论您是否愿意,系统都会继续向其他应用程序发送此类消息。