当前位置: 首页 > 编程笔记 >

C#检测是否有u盘插入的方法

甘君之
2023-03-14
本文向大家介绍C#检测是否有u盘插入的方法,包括了C#检测是否有u盘插入的方法的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了C#检测是否有u盘插入的方法。分享给大家供大家参考。具体如下:

该C#代码可监控是否有u盘插入,同时可以监控其它驱动器的变化

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices
;
namespace WindowsApplication16
{
 public partial class Form1 : Form
 {
  public Form1()
  {
   InitializeComponent();
  }
  [StructLayout(LayoutKind.Sequential)]
  public struct DEV_BROADCAST_VOLUME
  {
   public int dbcv_size;
   public int dbcv_devicetype;
   public int dbcv_reserved;
   public int dbcv_unitmask;
  }
  protected override void WndProc(ref Message m)
  {
   // 发生设备变动
   const int WM_DEVICECHANGE = 0x0219;
   // 系统检测到一个新设备
   const int DBT_DEVICEARRIVAL = 0x8000;
   // 系统完成移除一个设备
   const int DBT_DEVICEREMOVECOMPLETE = 0x8001;
   // 逻辑卷标
   const int DBT_DEVTYP_VOLUME = 0x00000002;
   switch (m.Msg)
   {
    case WM_DEVICECHANGE:
     switch (m.WParam.ToInt32())
     {
      case DBT_DEVICEARRIVAL:
       int devType = Marshal.ReadInt32(m.LParam, 4);
       if (devType == DBT_DEVTYP_VOLUME)
       {
        DEV_BROADCAST_VOLUME vol;
        vol = (DEV_BROADCAST_VOLUME)Marshal.PtrToStructure(
         m.LParam, typeof(DEV_BROADCAST_VOLUME));
        MessageBox.Show(vol.dbcv_unitmask.ToString("x"));
       }
       break;
      case DBT_DEVICEREMOVECOMPLETE:
       MessageBox.Show("Removal");
       break;
     }
     break;
   }
   base.WndProc(ref m);
  }
 }
}

希望本文所述对大家的C#程序设计有所帮助。

 类似资料:
  • 本文向大家介绍C#检测DataSet是否为空的方法,包括了C#检测DataSet是否为空的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#检测DataSet是否为空的方法。分享给大家供大家参考。具体如下: 下面的代码片段通过判断DataSet的Table数量来判断DataSet是否为空 希望本文所述对大家的C#程序设计有所帮助。

  • 问题内容: 当从PC上拔下USB键盘时,是否有任何守护程序/工具会触发某些信号/事件?我需要在程序中知道何时插入和拔出USB键盘。任何想法如何做到这一点? 问候,莱文 问题答案: udev(Linux设备管理器)是轮询硬件的工具。当它检测到有关设备的某些更改时,它将执行关联的规则。 您应该在udev中添加一条规则,以告知您的程序有关插入USB键盘的插入操作。您可以在此处找到有关udev规则的文档,

  • 问题内容: 我在做一个用用java Postgres的。有什么方法可以确定是插入行还是更新行? 问题答案: 您可以查看“系统”列来说明不同之处。在这种情况下,它用于插入的行。 这是建立在未记录的实现细节上的,该细节在将来的版本中可能会更改(即使可能性不大)。它适用于Postgres 9.5和9.6。 它的优点:您无需引入其他列。

  • 问题内容: 我有一个仅在成功完成几个测试后才能启动的过程。 我需要进行的一项测试是,我所有的NFS挂载均正常运行。 我能做得比蛮力方法更好吗: 这是一个实用程序,它将在后台运行命令,并在给定时间后将其杀死(如果在时间限制之前未捕获到该命令),则以明显的方式返回成功/失败。 用英语:解析输出,检查每个NFS安装点(有一个超时)。可选地(不在上面的代码中)在第一个陈旧的挂载上中断。 问题答案: 您可以

  • 本文向大家介绍C#检测远程计算机端口是否打开的方法,包括了C#检测远程计算机端口是否打开的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#检测远程计算机端口是否打开的方法。分享给大家供大家参考。具体分析如下: 这段C#代码用于检测远程计算机的3389端口是否处理打开状态,可以根据实际需要设置其它端口 运行结果如下: 希望本文所述对大家的C#程序设计有所帮助。

  • 本文向大家介绍检测iOS设备是否越狱的方法,包括了检测iOS设备是否越狱的方法的使用技巧和注意事项,需要的朋友参考一下 在应用开发过程中,我们希望知道设备是否越狱,正以什么权限运行程序,好对应采取一些防御和安全提示措施。 首先,你可以尝试使用NSFileManager判断设备是否安装了如下越狱常用工具: 但是不要写成BOOL开关方法,给攻击者直接锁定目标hook绕过的机会 攻击者可能会改变这些工具