我正在尝试使用WMI注册到“已添加设备/已删除设备”事件。当我说设备时 - 我的意思是Disk-On-Key或任何其他有文件的设备,我可以访问...
我正在注册活动,并且活动已经提出,但EventType属性与我期待看到的不同。
文档(MSDN)指出:1-配置更改,2-设备添加,3设备删除4-对接。出于某种原因,我总是得到1的值。
有什么想法吗?
以下是示例代码:
public class WMIReceiveEvent
{
public WMIReceiveEvent()
{
try
{
WqlEventQuery query = new WqlEventQuery(
"SELECT * FROM Win32_DeviceChangeEvent");
ManagementEventWatcher watcher = new ManagementEventWatcher(query);
Console.WriteLine("Waiting for an event...");
watcher.EventArrived +=
new EventArrivedEventHandler(
HandleEvent);
// Start listening for events
watcher.Start();
// Do something while waiting for events
System.Threading.Thread.Sleep(10000);
// Stop listening for events
watcher.Stop();
return;
}
catch(ManagementException err)
{
MessageBox.Show("An error occurred while trying to receive an event: " + err.Message);
}
}
private void HandleEvent(object sender,
EventArrivedEventArgs e)
{
Console.WriteLine(e.NewEvent.GetPropertyValue["EventType"]);
}
public static void Main()
{
WMIReceiveEvent receiveEvent = new WMIReceiveEvent();
return;
}
}
答案 0 :(得分:1)
好吧,我找不到代码。试过我的旧RAC帐户,什么都没有。我的旧备份中没有任何内容。去搞清楚。但是我试着弄清楚我是怎么做到的,而且我认为这是正确的顺序(我在article上有很多基础):
我知道还有其他方法,但事实证明这是唯一可以在不同版本的Windows中一致工作的方法,我们需要这样,因为我的客户端在从任何类型的设备上传图像的网页上使用ActiveX控件你插入(我认为他们生产了某种印刷亭)。
答案 1 :(得分:0)
哦!是的,我已经完成了这一步,但是在不久前使用原始Windows API调用,同时开发了一个检测到任何类型媒体插入的ActiveX控件。我会尝试从我的备份中发现代码,看看我是否可以告诉你我是如何解决它的。我会订阅RSS,以防有人先到达那里。
答案 2 :(得分:0)
那么,
你可以尝试win32_logical磁盘类并将其绑定到__Instancecreationevent。 您可以轻松获得所需信息
答案 3 :(得分:0)
我在我的系统上试过这个,最终得到了正确的代码。这需要一段时间。我得到了十几个事件,其中一个是设备连接代码。