gpt4 book ai didi

event-handling - WMI 和 Win32_DeviceChangeEvent - 返回了错误的事件类型?

转载 作者:行者123 更新时间:2023-12-02 07:48:47 31 4
gpt4 key购买 nike

我正在尝试使用 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;
}
}

最佳答案

好吧,我找不到代码。尝试了我的旧 RAC 帐户,没有任何结果。我的旧备份中没有任何内容。去搞清楚。但我尝试弄清楚我是如何做到的,并且我认为这是正确的顺序(我的很多内容都是基于此 article ):

  1. 获取所有驱动器号和缓存他们。
  2. 等待 WM_DEVICECHANGE消息,并启动一个计时器1 秒超时(这样做是为了避免很多杂散启动 WM_DEVICECHANGE 消息一旦插入就开始USB key /其他设备仅结束当驱动器“稳定”时)。
  3. 将驱动器号与旧缓存并检测新缓存。
  4. 获取这些设备的设备信息。

我知道还有其他方法,但事实证明这是唯一可以在不同版本的 Windows 中一致工作的方法,并且我们需要这种方法,因为我的客户在从任何类型的设备上传图像的网页上使用 ActiveX 控件你插入了(我认为他们生产了某种打印亭)。

关于event-handling - WMI 和 Win32_DeviceChangeEvent - 返回了错误的事件类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39704/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com