如何在UWP应用程序中创建COM对象?(C#)
问题:如何在通用Windows平台(UWP)应用程序中创建COM对象 动机:我想从WPF切换到UWP。因为我的工作负载需要调用只能通过COM访问的第三方库(据我所知),所以我需要从UWP调用COM 上下文:如何在UWP应用程序中创建COM对象?(C#),c#,com,interop,interaction,uwp,C#,Com,Interop,Interaction,Uwp,问题:如何在通用Windows平台(UWP)应用程序中创建COM对象 动机:我想从WPF切换到UWP。因为我的工作负载需要调用只能通过COM访问的第三方库(据我所知),所以我需要从UWP调用COM 上下文: C# .NET Visual Studio 2015 视窗10 理想情况下针对所有UWP设备,但如果仅限于台式机/笔记本电脑,则可以 背景 在Visual Studio 2013(“Visual Studio 2015中的经典桌面”项目)中,我使用了C代码 Visual Studio项目
- C#
- .NET
- Visual Studio 2015
- 视窗10
- 理想情况下针对所有UWP设备,但如果仅限于台式机/笔记本电脑,则可以
我仍然不确定是否有一种内置的方式来访问我的第三方库的COM API。如果没有,这可能意味着我将不得不使用网络端口或其他东西制作自己的包装器,这似乎是错误的。你肯定知道UWP应用程序是沙盒应用程序,它们几乎需要许可才能完成所有事情。例如,他们不能访问整个文件系统,只能访问沙盒存储区域。 当您希望在Windows应用商店中发布应用程序时,应用程序认证工具包会检查您的应用程序是否未执行不允许执行的操作 您提供的链接(Windows运行时应用程序的Win32和COM…)描述了允许的Win32/COM调用列表。Microsoft允许您调用这些方法,并且只允许调用它们 使用Visual Basic COM对象似乎遥不可及 这与安全限制有关,但也与可用功能有关:例如,无法在Windows Phone(regsrvr32)上注册COM对象
你可以在WPF应用程序中使用C语言,当然也可以用C++语言。不确定如果您尝试在UWP应用程序中复制/粘贴此类代码会发生什么。您可能可以在Windows桌面上运行该代码,但您肯定无法将应用提交到Windows应用商店,而且它也无法在其他UWP平台上运行。微软
我猜UWP不太适合/适应/兼容“旧”COM对象。。。我不确定从WPF到UWP的迁移会给您带来什么?UWP或Windows Universal Application听起来不是正确的解决方案。UWP不允许COM,因为它在所有平台上都不可用。我假设您希望将windows应用商店用于当前WPF应用程序的部署机制。Windows 10确实为WPF应用程序提供了microsoft所称的桥梁,您可以在Windows应用商店中将WPF应用程序作为appx包进行部署 希望您能用这个解决方案重写很少的内容 有关如何在APPx文件中部署WPF应用程序的更多信息,请参阅以下视频。
正如您所注意到的,无法从通用Windows应用程序访问任意COM对象。您的第三方库可能也使用Windows运行时中无法直接使用的API 假设您打算侧载应用程序,而不是通过应用商店进行部署,则可以通过(适用于Windows 8.1但仍适用于Windows 10的文档)间接调用COM对象和库。此功能专为企业应用程序设计,以提供现代用户界面,同时仍可以访问现有功能 如果您希望通过应用商店进行部署,那么您将受限于Windows运行时上下文中允许的API,并且不能使用代理的Windows运行时组件 如果您的主要目标是通过应用商店进行部署,而不需要转换为通用应用程序,那么请查看即将发布的应用程序,它将允许打包您当前的.Net项目进行应用商店部署,并允许扩展它以使用一些UWP功能。O
// Conceptual:
DotNetInterface comObjectInstance =
(DotNetInterface)Microsoft.VisualBasic.Interaction.CreateObject(
"this string specified the COM object type"
);
// Example: Open Excel via COM:
Excel.Application oApp = (Excel.Application)Interaction.CreateObject("Excel.Application");