我先给您一个解决方案吧:使用System.IO.DriveInfo类可以获取当前系统中的驱动器的信息。调用GetDrives方法获取驱动器名称然后判断DriveType枚举是否等于Removable就可以了。然后就是自动获取盘符的问题,您可以使用Timer,但是这样会对性能有比较大的影响,比较好的一个方法是重写窗体的WndProc方法,然后截取WM_DEVICECHANGE系统消息。 希望对您有帮助。 ========================================================== 对于补充的答复:您好,简单的代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms;namespace WindowsApplication1 { public partial class Form1 : Form { const int WM_DEVICECHANGE = 0x0219; public Form1() { InitializeComponent(); } protected override void WndProc(ref Message m) { if (m.Msg == WM_DEVICECHANGE) { MessageBox.Show("Got it!"); } base.WndProc(ref m); } } }您需要首先声明Windows消息的消息ID,然后重写WndProc方法来进行判断。很抱歉对于将PID转化为盘符的方法,我现在没有很好的方法。 ~~~~~~~~~~~~~~~~~~不是我写的~~~~~~~~~~~~~
{
const int WM_DEVICECHANGE = 0x219;
const int WM_DEVICEARRVIAL = 0x8000;
//如果m.Msg的值为0x8000那么表示有U盘插入 if(m.Msg == .............. )
{
//.....
}
}
不发生WM_DEVICEARRVIAL消息怎么会事?
多多指明教,
小女子不胜感激?
我先给您一个解决方案吧:使用System.IO.DriveInfo类可以获取当前系统中的驱动器的信息。调用GetDrives方法获取驱动器名称然后判断DriveType枚举是否等于Removable就可以了。然后就是自动获取盘符的问题,您可以使用Timer,但是这样会对性能有比较大的影响,比较好的一个方法是重写窗体的WndProc方法,然后截取WM_DEVICECHANGE系统消息。
希望对您有帮助。
==========================================================
对于补充的答复:您好,简单的代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace WindowsApplication1
{
public partial class Form1 : Form
{
const int WM_DEVICECHANGE = 0x0219; public Form1()
{
InitializeComponent();
} protected override void WndProc(ref Message m)
{
if (m.Msg == WM_DEVICECHANGE)
{
MessageBox.Show("Got it!");
} base.WndProc(ref m);
}
}
}您需要首先声明Windows消息的消息ID,然后重写WndProc方法来进行判断。很抱歉对于将PID转化为盘符的方法,我现在没有很好的方法。 ~~~~~~~~~~~~~~~~~~不是我写的~~~~~~~~~~~~~