c# - 可以在 WinForms 中使用 'DeviceWatcher' 吗?

标签 c# .net vb.net visual-studio microsoft-metro

我试图在 .NET Framework 类中找到最有效且可能实现的方式来监视驱动器,实际上我知道如何执行此 P/调用、使用结构等...但它有很多代码,我想改进它。

所以我发现了这个有趣的类,DeviceWatcher ,这似乎只能用于 Metro 应用程序?

我找不到关于那个类的太多信息,我想知道是否可以从 Winforms 引用所需的 dll 我可以实例化这个类以在 Winforms 中使用它?

最佳答案

是的,这是可能的,前提是您在 Win 8/Win Server 2012 上运行。

Scott Hanselman 很不错 article关于如何从桌面应用调用 WinRT 方法。

它的基础是,将以下内容添加到您的项目文件中(卸载、编辑、重新加载):

<PropertyGroup>
    <TargetPlatformVersion>8.0</TargetPlatformVersion>
</PropertyGroup>

然后添加对 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\Facades\System.Runtime.InteropServices.WindowsRuntime.dll 的引用

您还需要通过 Windows 选项卡下的添加引用对话框添加对 Windows.DevicesWindows.Foundation 的引用:

enter image description here

完成后,您可以实例化 Watcher 并添加事件处理程序:

DeviceWatcher dw = Windows.Devices.Enumeration.DeviceInformation.CreateWatcher();

dw.Added += dw_Added;
dw.Removed += dw_Removed;

dw.Start();

关于c# - 可以在 WinForms 中使用 'DeviceWatcher' 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21835653/

相关文章:

c# - 带where条件的mvc 5 asp.net selectlist

c# - NTAccount.Translate 方法因错误而失败 无法翻译部分或所有身份引用

c# - 用于将 DataTable 替换为集合的最佳 C# 泛型类?

.net - 返回不同数据类型的函数

c# - 伪 IPv4 正则表达式

c# - 如何强制机器人等待特定事件并同时继续轮询事件?

.net - ICommand 如何以及在何处融入整个 WPF MVVM 模式?

wpf - 以编程方式将标签添加到网格

vb.net - 在线程之间共享信息

c# - 通过使用 if 访问字典来缩短代码