如何从 WPF 访问 Windows.Devices.Scanners

Posted

技术标签:

【中文标题】如何从 WPF 访问 Windows.Devices.Scanners【英文标题】:How to access Windows.Devices.Scanners from WPF 【发布时间】:2015-10-23 03:54:21 【问题描述】:

我需要在我的 WPF 应用程序中从扫描仪获取图像。我使用了开源 TwainDotNet Twain32 包装器,但是,有些 Windows 8.1 设备会抛出 AccessViolationException。我想在 Windows.Devices.Scanners 命名空间中使用 Microsoft 支持的最新 WIA 包装器,而不是购买产品以在 Windows 8.1+ 机器上启用扫描。

通过以下说明,我已经成功地能够在 WPF 应用程序中使用某些 Windows.Devices.* 类型进行视频录制:How to use specific WinRT API from Desktop apps: capturing a photo using your webcam into a WPF app

当您查看 Windows.Devices.Scanners ImageScanner class 的文档时,您可以看到支持的最低客户端是 Windows 8.1 [Windows 应用商店应用程序,桌面应用程序]。由于它适用于 Windows 应用商店应用程序和桌面应用程序,这意味着您应该能够在 WPF 中使用此命名空间和关联的类。元数据被列为 Windows.winmd,我相信它已经在上面的教程中概述的项目中引用(对 Windows 的引用)。

我的问题:如何在 Windows 8.x+ 上运行的 WPF 应用程序中使用 Windows.Devices.Scanners 类型?

提前感谢所有回复

【问题讨论】:

【参考方案1】:

文档指出支持的最低客户端是 Windows 8.1。您使用的教程告诉您编辑 CSPROJ 文件以添加以下代码:

<TargetPlatformVersion>8.0</TargetPlatformVersion>

将此更改为 8.1 以引用仅 8.1 的类型:

<TargetPlatformVersion>8.1</TargetPlatformVersion>

【讨论】:

以上是关于如何从 WPF 访问 Windows.Devices.Scanners的主要内容,如果未能解决你的问题,请参考以下文章

如何从我自己的 .cs 文件访问 WPF MainWindow 控件

从 NAudio 访问 WPF MediaElement 声音流

如何从 viewmodel 访问用户控件上的命令

如何从同一 WPF 应用程序托管的 WCF 服务调用 WPF 应用程序中的方法?

wpf - 根据条件从 MS 访问数据库中选择数据

WPF - 按字体名称访问 Roboto 字体时出现问题