`
isiqi
  • 浏览: 16551394 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

USB设备的插入和弹出的监听以及软弹出可移动媒体(如Windows的移除USB设备)

阅读更多

一、监听USB设备的插入和弹出

当USB设备插入或者弹出时,Windows会产生一条全局消息:WM_DEVICECHANGE

我们需要做的是,获得这条消息的wParam参数,如果为DBT_DEVICEARRIVAL则表示有设备插入并可用,

如果是DBT_DEVICEREMOVECOMPLETE则表示有设备已经移除。再查看lParam参数为DBT_DEVTYP_VOLUME时,

就可以取出DEV_BROADCAST_VOLUME结构的卷号dbcv_unitmask,就知道是哪个卷被插入或者弹出。

代码片段如下:

现在,你可以在你的UI线程上创建一个DriveDetector对象,监听DeviceArrived和DeviceRemoved事件。

然后通过该对象WndProc方法,传递UI线程上的消息。WPF程序可以直接用HwndSource对象AddHook,此方法的签名

与HwndSourceHook委托相同。WinForm程序也没关系,override窗口的void WndProc(ref Message m)方法,按

DriveDetector对象的WndProc签名格式,将m数据传入,或者干脆自己写个WinForm版本的。

我的演示代码效果图如下:(注,上述代码未提供显示代码,请自己编写)

另外,关于磁盘容量的监视可以使用FileSystemWatcher对象。

请参考:http://msdn.microsoft.com/zh-cn/library/cc437966.aspx

摘取代码如下:

二、软件弹出可移动媒体

网上有一部分关于这方法的代码,我的代码是从MSDN获取的VC++版本,需要调用多个API函数,转换为C#代码如下:

参考:http://support.microsoft.com/kb/165721

预览:(注,弹出可移动磁盘,并不会删除驱动器号,但设备已经被弹出,如图中的h盘

注:已改进,安全弹出后,通过DDD_REMOVE_DEFINITION移除h盘。

分享到:
评论

相关推荐

    USB设备监测插入及安全弹出示例

    USB设备监测插入及安全弹出示例是一个VB(Visual Basic)编程示例,它演示了如何在Windows操作系统中实现对USB设备的实时监控和安全移除功能。VB是一种面向对象的编程语言,尤其适合开发Windows应用程序。这个示例...

    windows下qt监听 USB 插入/拔出

    在Windows环境下,使用Qt框架来监听USB设备的插入和拔出事件是一项常见的需求,尤其是在开发与USB设备交互的应用程序时。本教程将详细介绍如何在Qt 4.8.3版本下实现这一功能。 首先,我们需要了解Qt提供的信号和槽...

    USB设备监测插入弹出示例

    3. **USB事件处理**:在Windows、Linux或macOS等操作系统中,可以通过注册回调函数或使用特定API来监听USB设备的插入、拔出事件。例如,Windows中的`DeviceArrival`和`DeviceRemoveComplete`事件,Linux的`udev`框架...

    JAVA USB监听器

    4. **文件系统监控**:利用FileObserver或WatchService监听USB设备目录,捕获文件变化。 5. **后台服务**:创建并管理后台服务,使得程序能在用户无感知的情况下持续运行。 6. **权限控制**:适当地设置程序的权限,...

    C# 检测USB设备插拔及响应各个事件

    在C#编程中,检测USB设备的插拔和响应相关事件是通过Windows API以及.NET Framework提供的类库来实现的。本文将深入探讨如何利用C#实现实时监测USB设备的插入和移除,并处理相关事件。 首先,我们需要了解Windows...

    C# 监听USB插入拔出

    总的来说,监听USB设备的插入和拔出是通过注册设备接口回调,创建设备事件处理窗口以及解析设备信息来实现的。通过编写一个工具类,我们可以方便地在C#应用程序中集成这一功能,从而提高软件的交互性和用户体验。

    C# 安全移除USB设备

    这个类库可能包含一个或多个类,如`USBDevice`,其中封装了设备枚举、事件监听和安全移除的逻辑。通过阅读和理解这个类库的代码,你可以学习到如何在C#中实现USB设备的管理和安全移除。 总的来说,C#与USB设备的...

    C#检测USB的插入和拔出,绝对有用

    总结来说,C#检测USB设备的插入和拔出主要依赖于WMI和`ManagementEventWatcher`,通过监听设备事件并解析设备信息,可以实现对USB设备的实时监控。这样的功能在数据备份、设备自动识别等场景中非常实用。

    C#监听USB设备插入并识别出盘符

    一个C#编写的与系统设备有关的小程序,用以监听USB设备比如手机、U盘等是否插入或拨出电脑,若有插入电脑的话并自动识别出盘符。程序界面比较简单,只是为了告诉大家监听状况。本程序创建于VS2008,低版本如VS2005等...

    利用QDBus在linux下检测USB存储设备的插入和拔出

    在Linux系统中,检测USB存储设备的插入和拔出通常涉及到监控系统事件,特别是与硬件相关的UDEV事件。QDBus是Qt库提供的一种基于D-Bus的通信机制,它允许进程间通信(IPC)并能方便地访问系统服务,如HAL(硬件抽象层...

    监听软键盘的弹出与收起

    本文将深入探讨如何在Android应用中监听软键盘的弹出与收起,以及实现这一功能的一些关键技术和策略。 首先,软键盘的弹出与收起通常涉及到Activity的根布局和输入法管理器(InputMethodManager)。当用户点击...

    使用QT检测USB设备

    1. 使用`QUsbDetector`监听USB设备插入和移除信号。 2. 在信号触发时,获取设备的详细信息(如供应商ID和产品ID)。 3. 使用`QSerialPort`进行设备通信。 4. 实现多线程处理以保证程序的响应性。 5. 更新图形用户...

    USB设备监测及弹出实例

    弹出设备意味着安全地从系统中移除设备,避免数据丢失或损坏。 6. **用户界面设计**:VB提供了丰富的控件和事件处理机制,使得创建用户友好的界面变得简单。在USB设备监测程序中,可能包含设备列表视图、状态指示器...

    USB检测,移除|UsbEject

    - 事件订阅:为了实时检测USB设备的插入和拔出,可以使用`ManagementEventWatcher`类监听`Win32_DeviceChangeEvent`,当设备状态改变时,事件触发器会执行指定的回调函数。 2. **USB设备移除** - 安全移除:在...

    C#实时检测USB设备的插拔并响应各个事件

    以下是一个简单的示例,展示了如何创建一个C#应用程序来监听USB设备的插入和移除: ```csharp using System; using System.Management; class Program { static void Main() { ManagementScope scope = ...

    QT5 下 usb 设备插拔检测

    为了监听USB设备的插拔事件,我们需要连接到QDeviceDiscovery的deviceAdded()和deviceRemoved()信号。这两个信号会在USB设备插入或移除时触发,我们可以在这个过程中检查设备的VID和PID来判断是否是我们关心的USB ...

    检测USB的插入与拔出 C#实现

    在本文中,我们将深入探讨如何使用C#编程语言来检测USB设备的插入和拔出事件。C#提供了丰富的系统管理类库,使我们能够轻松地监控系统硬件的变化,包括USB设备的状态。 首先,我们需要了解Windows操作系统如何处理...

    Android 利用广播监听usb连接状态(变化情况)

    当USB设备插入或者拔出时,应用程序可能需要执行相应的操作,比如启动服务、弹出提示信息等。为了实现这一功能,Android提供了一种机制,即通过广播接收器(BroadcastReceiver)来监听特定的系统广播。 知识点一:...

    USB检测插入并执行弹出的软件源码

    1. 注册USB设备的热插拔事件:通过Windows API函数如`RegisterDeviceNotification`来监听USB设备的插入和移除。 2. 设备枚举与识别:遍历系统中的所有设备,通过设备类(DeviceClass)或设备ID(DeviceID)来识别USB...

Global site tag (gtag.js) - Google Analytics