【问题标题】:Add items to the ROT( Running Objects Table)将项目添加到 ROT(运行对象表)
【发布时间】:2015-02-11 05:02:25
【问题描述】:

我知道如何使用 *****.GetActiveObject(ProgId),但是问题是我使用此代码行的几个应用程序没有添加到 ROT,即使它们已经打开,我得到HRESULT 错误。但是,如果我单击另一个应用程序,然后返回到原始应用程序,代码行就可以正常工作。

之所以如此含糊不清,是因为这是我在 10 多个应用程序中遇到的问题。

我不发布代码的原因是因为我不相信这个问题是基于代码的,而是我认为这个问题是由于我缺乏理解造成的。

我遇到此问题的最重要的程序之一是“Microsoft Excel”。 我想要做的就是能够在特定单元格启动用户。

我已经到处寻找关于如何在 Excel 中使用 *****.GetActiveObject(ProgId) 的体面解释,但是,似乎没有任何合理的答案。该程序可以用 c# 编写,但是,如果它在 Visual Basic 中更简单,那不是问题

【问题讨论】:

标签: c# excel excel-addins running-object-table vba


【解决方案1】:

http://support.microsoft.com/kb/316126

COM 服务器应该在运行对象中注册自己 启动后的表。 Office 程序在注册时自行注册 失去焦点。如果程序在之前尝试附加到正在运行的实例 程序失去焦点,您可能会收到一条错误消息。为了 有关如何解决此问题的其他信息,请单击 下面的文章编号以查看 Microsoft 中的文章 知识库:316125 PRB:附加到运行的 Visual C# .NET 错误 Office应用实例

使用代码,您可以将焦点从 Office 应用程序转移到您的 自己的应用程序(或其他应用程序)以允许其注册 自己在ROT。此外,如果您的代码正在启动 Office 应用程序的可执行 (.exe) 文件,您可能需要 等待 Office 应用程序完成加载,然后再尝试 附加到正在运行的实例。

确保在尝试连接之前激活另一个窗口。如示例所示,您可以使用Form.Activate 聚焦自己的表单,从而导致Office 应用失去焦点。

【讨论】:

  • 好的,这样就更清楚了,我看到的所有其他解释都不是那么清楚,他们也没有提供这么简单的答案。再次,谢谢
猜你喜欢
  • 2012-02-24
  • 1970-01-01
  • 1970-01-01
  • 2021-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-04
相关资源
最近更新 更多