- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
全部:
我在将一些 VBA 代码转换为 C# 时遇到了一些问题。
我们有一个充当本地 COM 服务器的第 3 方应用程序。
在 VBA 代码中,我们使用 GetObject() 获取对现有对象的引用
例如
Set appHandle = GetObject("", ProgId)
这很好用。
我在我们的 C# 代码中添加了对第 3 方应用程序的引用,并使用 Marshal.GetActiveObject() 尝试获取对正在运行的实例的引用。
例如
var appModel = (IAppCoModel)Marshal.GetActiveObject(ProgId);
但我一直收到 MK_E_UNAVAILABLE 错误。
在 C# 代码中创建一个新对象工作正常
例如
var appModel = new AppCoModel()
这会启动第 3 方应用程序并允许我与其通信。它只是获取对失败的正在运行实例的引用。
我尝试过的
不同的安全上下文
VS 在管理模式下运行,第 3 方应用程序不是。我尝试从命令行(非管理员)运行我们的 c# 应用程序。仍然失败。
检查 ROT 内容
(由 Marshal.GetActiveObject() throws MK_E_UNAVAILABLE exception in C# 建议)
第 3 方应用程序未出现在其中。对 COM 了解不足,无法确定它是否需要。
检查了所有注册表项
看起来不错(据我所知)并且它们足以创建第 3 方应用程序的实例并让 VBA 找到它。有什么我应该在这里检查的具体内容吗?
如有任何建议,我们将不胜感激。
最佳答案
全部:
不太确定结束自己的问题的礼仪是什么,但既然我找到了答案,我想以某种方式将其标记为“不需要答案”。
GetActiveObject() 返回 MK_E_UNAVAILABLE 的原因是第 3 方应用程序未注册为自动化服务器。无法获得对正在运行的实例的引用。
这在 VBA 代码中没有显示,因为:
GetObject("",ProgID)
每次创建一个新实例 ( http://msdn.microsoft.com/en-us/library/gg251785.aspx )
第三方应用程序中的 COM 公开功能会在应用程序未运行时启动该应用程序。因此,在 VBA 中,我们创建了多个对象,它们都指向同一个正在运行的应用程序,而不是附加到正在运行的应用程序。
关于c# - GetActiveObject() 与 GetObject() - MK_E_UNAVAILABLE 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10108098/
我正在使用 Fabric.js 并尝试为图像和文本元素实现复制功能。我找到了两个关于如何复制对象的解决方案: 方法一 stage.getActiveObject().clone(); 方法二 fabr
我正在使用 Microsoft.Office.Interop.Excel.Application oExcelApp = (Microsoft.Office.
我需要用 C# 完成一个应用程序。 现在我想得到一个控制Excel文件获取数据的函数。 我使用了 getActiveObject("Excel.Application"),但这没有返回任何结果。我不能
全部: 我在将一些 VBA 代码转换为 C# 时遇到了一些问题。 我们有一个充当本地 COM 服务器的第 3 方应用程序。 在 VBA 代码中,我们使用 GetObject() 获取对现有对象的引用
我想检查 Canvas 上所选图像的图像质量。 我的以下代码: var canvas = $(".canvas-container").children('canvas').get(0); //con
在不单击 Canvas 区域的情况下,我想在将文本添加到 Canvas 后对其进行更改。在我的代码中,我必须先选择 Canvas 文本,然后在输入文本区域时更改它。这是我的代码://html
我一直在使用 itunes 启动 try: itapp= win32com.client.Dispatch('iTunes.Application') except: itapp= w
当 Visual Studio 未以管理员身份启动时,此代码在 release r 调试中运行没有问题。 Marshal.GetActiveObject("Outlook.Application");
我正在尝试使用 F# 自动执行一些 Excel 任务。我实际上有两个问题:1. 如果我使用 Excel.Application 实例打开工作簿,我将错过刚刚在 Excel 中打开工作簿时自动加载的所有
下面的 vbscript 代码工作得很好: Dim App Set App = GetObject("","QuickTest.Application") App.Quit 但是当我将它翻译成如下 C
目前我的代码使用 SurferApp = Marshal.GetActiveObject("Surfer.Application") as Surfer.Application 获取一个叫做surfe
GetActiveObject() 方法在 .NET Framework 的 System.Runtime.InteropServices.Marshal 中可用,但在 .NET Core ( htt
我正在尝试连接到正在运行的 Excel 实例,但是当我尝试使用以下代码片段时: using Microsoft.Office.Interop.Excel; using System.Runtime.I
我打算从外部应用程序开始一个 Outlook 交互的新项目(邮件主题操作、从 Re: Fw: 清除主题等。添加主题标签、在外部数据库中研究主题标签等)。我习惯于调用 Marshall.GetActiv
我是一名优秀的程序员,十分优秀!