【问题标题】:Detect iPhone using WMI in C#在 C# 中使用 WMI 检测 iPhone
【发布时间】:2011-01-25 11:49:57
【问题描述】:

我正在使用以下代码在 USB 设备连接到计算机时检测它:

private ManagementEventWatcher m_watcher;
try
    {
        string queryString =
          "SELECT * " +
          " FROM __InstanceCreationEvent " +
          " WITHIN " + pollingInterval +
          " WHERE TargetInstance ISA 'Win32_USBHub'";

        EventQuery processQuery = new EventQuery(queryString);
        ManagementScope scope = new ManagementScope("root\\CIMV2");
        scope.Options.EnablePrivileges = true;

        m_watcher = new ManagementEventWatcher(scope, processQuery);
        m_watcher.EventArrived += new System.Management.EventArrivedEventHandler(EventArrived);
        m_watcher.Start();
    }

private void EventArrived(object sender, EventArrivedEventArgs e)
{
    var instance = ((PropertyData)(e.NewEvent.Properties["TargetInstance"]));
    var obj = (ManagementBaseObject)instance.Value;
    var args = new InsertEventArgs();

    var description = (string)obj.Properties["Description"].Value;
    var deviceId = (string) obj.Properties["DeviceID"].Value;
    var status = (string) obj.Properties["Status"].Value;

当我连接 USB 密钥和三星手机时,这可以正常工作。当我连接 iPhone 时,EventArrived 功能永远不会被击中。我使用了错误的事件吗?我做错了什么?

【问题讨论】:

  • 不行,好像找不到任何有用的东西,太可惜了。
  • 插入 iPhone 时是否添加了事件日志条目和/或注册表项?如果 iPhone 的存储附件选项 [短语?] 未启用,则其驱动器将无法被识别,因此检查存储 USB 连接模式设置可能会很好..

标签: c# iphone wmi


【解决方案1】:

试试这个代码:

var queryStr = "SELECT * FROM __InstanceCreationEvent WITHIN 2 WHERE TargetInstance ISA 'Win32_PnPEntity'";

var watcher = new ManagementEventWatcher(queryStr);
watcher.EventArrived += DeviceChangeEventReceived;
watcher.Start();

事件处理程序:

private static void DeviceChangeEventReceived(object sender, EventArrivedEventArgs e)
{
    var instance = ((PropertyData)(e.NewEvent.Properties["TargetInstance"]));
    var obj = (ManagementBaseObject)instance.Value;

    var description = (string)obj.Properties["Description"].Value;
    var deviceId = (string)obj.Properties["DeviceID"].Value;
    var status = (string)obj.Properties["Status"].Value;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-21
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    相关资源
    最近更新 更多