【发布时间】:2012-12-04 20:50:10
【问题描述】:
我是 C# 的新手——因为对 USB 驱动器的特殊需求,我是三天前开始接触 C# 的。在这里和那里阅读我可以使用以下代码。我想知道用户何时将笔式驱动器插入 USB 端口。
唯一的问题是在 XP32(我测试过的唯一 XP)上永远不会检测到该事件。在 Windows 7 上它可以完美运行。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management;
using System.Diagnostics;
using System.Threading;
using System.IO;
using Microsoft.Win32;
using System.Security.Permissions;
namespace X
{
class Program
{
static void Main(string[] args)
{
ManagementEventWatcher watcher = new ManagementEventWatcher();
WqlEventQuery query = new WqlEventQuery("SELECT * FROM Win32_VolumeChangeEvent WHERE EventType = 2");
watcher.Query = query;
watcher.Start();
watcher.WaitForNextEvent();
// DO something if a pen drive (or any storage device) is inserted.
// Works fine on Windows 7
// XP will ignore the event...
}
}
}
欢迎提出任何建议!
问候,
塞尔吉奥
【问题讨论】:
-
看看这个链接它可能是你正在做的更好的选择..codeproject.com/Articles/3946/Trapping-windows-messages
-
WqlEventQuery 不支持 Windows XP。所以这个方法不能用。更详细地研究该类以前的版本 DID 支持 Windows XP。您使用的是哪个版本的 .NET Framework?这意味着这不起作用的原因实际上是因为
Win32_VolumeChangeEvent不支持 Windows XP。根据msdn.microsoft.com/en-us/library/windows/desktop/…,这也不正确
标签: c# windows-7 insert windows-xp usb