1

我一直在开发一个应用程序,现在我已经完成了检测 USB 设备(MASS STORAGE),但我需要做的是捕获该消息并且不要将其传递给 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";
}
4

1 回答 1

0

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

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

无论如何,您所做的只是将消息跳过到 Form 的基类,而不是更多。不管你是否愿意,系统都会继续向其他应用程序发送这样的消息。

于 2012-05-24T08:12:56.230 回答