【问题标题】:Auto Detect Windows Mobile Device programmatically以编程方式自动检测 Windows Mobile 设备
【发布时间】:2011-01-14 15:26:02
【问题描述】:

我正在编写一个 Windows 应用程序(完全用 C++ 编写),它从运行 Windows Mobile 的手机上的存储卡中读取文件。困难的部分是,我不知道如何让我的应用程序检测到用户将手机连接到笔记本电脑的 USB 的事件。我在 MSDN 上做了一些阅读,并使用 RegisterDeviceNotification 编写了一个小代码,它检测何时从笔记本电脑连接/移除 USB 磁盘。但是,我无法对其进行调整以使其适用于手机类型的设备。请通过任何解释这一点的链接/教程帮助我(最好是 C++,因为我不知道 .NET 或 C#)。

谢谢 阿洛克

【问题讨论】:

    标签: visual-c++ windows-mobile detect


    【解决方案1】:

    根据this article,您可以使用 RegisterDeviceNotification 在 activesync 检测到设备已插入/拔出时获取通知。 (见文末选项3)

    这可能只是设置正确的通知过滤器的问题。

    【讨论】:

    • 感谢您的帮助。我让它与 RAPI 和 Windows Mobile Center 一起使用。
    【解决方案2】:

    Windows Mobile 设备使用 RNDIS,这是一种幕后网络接口协议。因此,RegisterDeviceNotification 方法仍然有效,但您正在寻找 DEV_BROADCAST_DEVICEINTERFACE,而不是 DEV_BROADCAST_VOLUME。 (即dbch_devicetype==DBT_DEVTYP_DEVICEINTERFACE

    【讨论】:

      【解决方案3】:

      您可以使用RAPI 或 RAPI2 来检测 Windows Mobile 设备何时通过 Active Sync 或 Windows Mobile Device Center 连接到 PC。 RAPI 还可用于读取存储卡上的文件等等。

      RAPI 更易于编程,因为它是基于 C 的 API。 RAPI2 具有比 RAPI 更多的功能,但它是一个面向对象的 COM API。如果您的需求很简单,并且一次只关心一个设备/连接,那么 RAPI 就足够了。有两个 RAPI 函数用于检测连接:CeRapiInit(阻塞)和CeRapiInitEx(连接时发出事件信号)。

      【讨论】:

        猜你喜欢
        • 2010-09-17
        • 2011-12-22
        • 2011-03-27
        • 1970-01-01
        • 2018-12-26
        • 2013-10-29
        • 2011-03-09
        • 2011-11-26
        • 1970-01-01
        相关资源
        最近更新 更多