【问题标题】:WPF, UWP and HardwareWPF、UWP 和硬件
【发布时间】:2018-10-22 00:27:46
【问题描述】:

我刚从 Microsoft Build 2018 回来,他们宣布 .NET Core 3 支持 WPF 应用程序。这很棒,因为我终于可以开始使用一些可用于 UWP 的很酷的流畅设计。唯一的问题是,它要到明年才能发布。

我开始考虑将我的应用转换为 UWP 应用(因为我不耐烦),但我遇到了一些挑战。主要是硬件。在与 Build 的几个人交谈时,他们认为编写连接到低级 Win32 驱动程序以与硬件(HID 打印机、读卡器、条形码扫描仪等)通信的 UWP 应用程序似乎是可能的。我没有任何运气找到有关此的信息。需要明确的是,这不是我想要发布到 Windows 应用商店的应用程序。这是一个在我们自己的硬件上运行的信息亭应用程序。

如何访问 Win32 API 以在 UWP 中进行硬件集成?

【问题讨论】:

  • 你有什么问题?
  • 主要是UWP中如何访问硬件的Win32 API。
  • 你把它搞混了。 UWP 的一个预期目标是物联网,它在低于 100 美元的小型硬件上运行。 IoT 使与硬件的接口变得重要,Windows.Devices 命名空间非常广泛。实际上没有什么新东西,但比传统的 winapi 更容易使用。 .NETCore v3 上的 WPF 和 Winforms 支持与 UWP 目标没有任何关系。它也不会给 DirectX 提供超出 WPF 已经支持的东西。
  • 他们在 Build 中谈到的其中一件事情是,面向 .NET Core 3 的 WPF 如何将 UWP 控件带入 WPF 和 WinForms 世界。尽管他们没有宣布,但其中一位 MS 人员表示,一旦 WPF 能够支持核心,它距离 DX 升级不远了。
  • @ChrisLees 看到docs.microsoft.com/en-us/uwp/win32-and-com/…这个话题了吗?

标签: c# wpf uwp hardware uwp-xaml


【解决方案1】:

您最好的选择可能是使用P/Invoke,这是一种旨在允许 .NET 代码调用非托管代码的技术。假设您的硬件是通过 DLL 中的 Win32 API 访问的,这可能是您的最佳选择。

pinvoke.net 网站提供了调用特定 Win32 API 所需的 .NET 代码的特定示例。也许这些示例可以帮助您入门。

【讨论】:

    【解决方案2】:

    用 C++/CX 编写的 UWP 应用可以访问作为通用 Windows 平台 (UWP) 一部分的 Win32 和 COM API。 Win32 and COM APIs for UWP apps 中的 API 仅适用于 C++,您不能使用 C# 直接访问它。请参阅Visual C++ Language Reference (C++/CX) 以获取有关 C++/CX 的更多详细信息。

    但是,您可以在 C++/CX 中创建一个 Windows 运行时组件,然后从 C# 中调用它,您可以在此处查看演练:

    https://docs.microsoft.com/en-us/windows/uwp/winrt-components/walkthrough-creating-a-basic-windows-runtime-component-in-cpp-and-calling-it-from-javascript-or-csharp

    【讨论】:

    • 我宁愿不学习一门新语言只是为了向 HID 打印机发送一些文档。谢谢你的信息!
    • 对于编程语言来说,某种“混合模式”是真的吗?所以大部分应用程序都是用 c# 编写的,而一小部分逻辑是用 c++ 编写的,以访问控制硬件设备(来自 Windows 10 应用程序)的 .dll 功能?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-18
    • 1970-01-01
    • 2018-07-10
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    相关资源
    最近更新 更多