C# 是否有让';让我知道是否安装了SD卡?我得复印几百张卡片

C# 是否有让';让我知道是否安装了SD卡?我得复印几百张卡片,c#,windows,sd-card,C#,Windows,Sd Card,有没有Windows事件或机制可以让我知道SD卡是否安装在运行C#格式Windows XP/Vista/7的PC上 到今天为止,我找到了一种使用WM消息来知道是否连接了新驱动器的方法,也找到了一种使用WQL的方法,它们对CD/DVD和USB工作正常,但没有人能够检测到我是否将SD卡插入了电脑。这似乎与USB驱动器不同,我想这是因为“读卡器”硬件已经连接到电脑上 但我不敢相信没有办法:( 我的问题有一点背景: 我必须手动复制800张SD卡,这是一次性的事情,我想制作一个小应用程序,在我插入一张卡时

有没有Windows事件或机制可以让我知道SD卡是否安装在运行C#格式Windows XP/Vista/7的PC上

到今天为止,我找到了一种使用WM消息来知道是否连接了新驱动器的方法,也找到了一种使用WQL的方法,它们对CD/DVD和USB工作正常,但没有人能够检测到我是否将SD卡插入了电脑。这似乎与USB驱动器不同,我想这是因为“读卡器”硬件已经连接到电脑上

但我不敢相信没有办法:(

我的问题有一点背景:


我必须手动复制800张SD卡,这是一次性的事情,我想制作一个小应用程序,在我插入一张卡时立即启动复制作业,这样您就不必单击任何按钮。

这不完全是您想要的,但可能是另一种解决方案:

这里有一个如何将你的应用注册为自动播放处理程序的指南。你可以勾选告诉windows始终使用此操作的框,然后就可以了

编辑:


另一种方法是使用同样引入的DriveDetector类。该类将自动通知您到达或删除的驱动器,但我不确定这是否适用于闪存卡。

IIRC,Windows 7已禁用除CD/DVD/BD之外的所有驱动器的自动播放功能

如果我是你,我会这么做:

  • 使用以下方法从目标驱动器获取文件列表(假设它始终是同一个驱动器):
  • 如果列表长度为0(即,没有文件),则假定未装入任何内容
  • 如果列表长度不是0,请复制文件

  • 但是如果我插入SD卡,自动播放窗口会在我的Windows 7上弹出?!DriveDetector对usb驱动器有效,但对SD卡无效