问题标签 [ole-automation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
541 浏览

excel - 在 VBA 中复制 Excel 工作簿变量

假设您有 2 个 Excel.Workbook 变量 wbA 和 wbB。第一个变量是您分配给 Excel.Workbooks.Open 之类的工作簿。

现在我的问题:您如何将 wbA 分配给 wbB,以便 wbB 是 wbA 的副本,而不仅仅是对其的引用?

我尝试了一个简单的wbB = wbA方法,但这似乎只是将 wbB 引用到 wbA。

非常感谢!

0 投票
1 回答
346 浏览

c# - 访问从 importlib 未注册的类型库引用 ITypeInfo 的 ITypeInfo 会导致 TYPE_E_CANTLOADLIBRARY 错误

我正在使用 .NET ( ) 中的自动化 API来检查我自己生成System.Runtime.InteropServices.ComTypes的类型库(见下文)。Bar.tlb该类型库声明了一个接口,该接口IBar继承自在IFoo导入的类型库中定义的接口Foo.tlb。检查ITypeInfo表示IBar会导致异常。(代码如下。)

在我开始编写代码之前,这里是我生成Bar.tlb类型库的方式。

酒吧.idl:

Foo.idl:

我使用以下命令编译了两个 IDL 文件,该命令成功,没有任何错误或警告:

现在我想做的是:

在标有 的行上抛出异常//!。被检查ITypeInfo的是IBar接口。

我了解自动化 API 必须无法找到继承的接口IFoo,该接口包含在另一个未注册的类型库中。

Bar.tlb但显然无论如何都应该可以检查。OleView.exe管理得很好:

在 OleView 中检查 <code>Bar.tlb</code> 工作正常。

(是的,它给出了一个关于无法重建外部类型库文件名的警告,这是因为我没有注册Foo.tlb。这不是我担心的。)

如果OleView.exe可以检查IBar而不会崩溃,为什么我的代码会因为简单的事情而崩溃typeInfo.GetTypeAttr()?我该如何解决?

0 投票
1 回答
976 浏览

delphi - 以编程方式编辑 Word 文档中的合并字段

我正在使用 Delphi 7 来处理邮件合并文档,该文档已经在 delphi 外部创建并使用合并字段进行了修复,我的目标是通过 delphi 7 编辑(更改)那些合并字段。

假设我有名为“field1”的合并字段,我必须进行编辑以使合并字段名称为“field2”。

我尝试了以下方法来打开和替换(编辑)合并字段,但我只能替换文本,合并字段实际上与替换前相同。

0 投票
1 回答
1691 浏览

java - 如何将 Java 日期转换为 OADate 或反之亦然?

我想将 Java 日期转换为 Microsoft OLE 自动化 - OADate 类型或想将 OADate 转换为 Java 日期。Java的OADate的公式是什么?其实我已经在stackoverflow中搜索过,找不到答案,我得到了答案,想在这个社区分享。

例如: 43013.7659837963等于Thu Oct 05 18:23:01 EET 2017

0 投票
0 回答
1428 浏览

sql-server - SQL Server - 队列激活过程中的 Ole 自动化过程

我想在将行插入表时调用 Web 服务。所以我启用Ole Automation Procedures,像下面那样调用 Webservice,一切都很好。

但是,由于 Webservice 调用非常冗长,我需要使用 Service Broker 来完成。所以我创建了一个新的存储过程并将其作为我的激活参数传递,Queue如下所示:

但这一次,没有发送请求。我检查并意识到该sp_OACreate方法不会创建对象,因为它的值@Objectnull在执行它之后。此外,当我打电话sp_OAGetErrorInfo获取错误信息时,一切都是null

我正在使用 SQL Server 2016

如果您能在这里找到问题,我将不胜感激。

编辑

我发现如果我启用TRUSTWORTHY该数据库一切正常。但启用它 可以打开安全漏洞

有没有更好的方法来做到这一点?

0 投票
1 回答
166 浏览

sql - 如何调试无法通过 SQL(OLE 自动化)调用 Web 服务?

我正在从 SQL 调用 Web 服务。这听起来可能很奇怪,但无论如何,这就是我正在做的事情。

我的代码可以调用在线(公共)Web 服务 (HTTP GET),但是当我尝试调用同一 AWS 环境中的服务(也称为 HTTP GET)时,该服务不会被调用,并且我得到一个空白响应。

这是有效的代码:

当我在 AWS 中将@URL 替换为对我的服务的调用时,该服务不会被调用,并且我得到一个空白的@ResponseText。

我试过的:

  • 通过将 URL 粘贴到 Chrome 中从数据库服务器调用 Web 服务,工作正常。
  • 通过将 URL 粘贴到 Chrome 中从我的 PC 调用 Web 服务,工作正常。
  • 在我的本地 PC 上从 SQL 调用 Web 服务失败。
  • 从 AWS 中的数据库服务器上的 SQL 调用 Web 服务失败。

任何有助于调试的建议将不胜感激。

0 投票
1 回答
439 浏览

c# - C# 运行主动自动化对象 - 如何获取事件源?

我有一个(长期运行的)控制台应用程序,用 C# 编写,我希望能够通过 COM 操作它(所以没有 InProc DLL 和 regasm.exe)。IDispatch是我所需要的 - 所以一个经典的 OLE 自动化对象。

在这里,我将展示我尝试做的最小版本。我已经定义了一个这样的 COM 类:

我只是在Main()运行对象表 (ROT) 中使用"comTestApp"Moniker 注册对象并休眠应用程序。你可以在这里看到完整的源代码。

当我尝试调用对象的方法时,这工作得很好。例如,这个 VBScript 工作正常:

但是当我尝试连接事件时:

调用时ConnectObject出错(错误 0x80020009“无法连接对象”)。

如果我使用 regasm.exe 将程序集注册为 InProc 对象,则相同的代码(只需添加类 GUID/ProgID)可以工作,但我不需要。我需要访问正在运行的应用程序,这就是我使用 ROT 的原因。

我创建了一个简单的 C++ 测试,看看我是否能找到有关该问题的更多信息。来源在这里。我编写了一个最小的 COM 对象来实现IDispatch应该充当事件接收器的接口。首先我从 ROT 中获取对象,查询IConnectionPointContainer,然后获取IConnectionPointITestEventsIID,最后调用它的Advise()方法。与 VBScript 一样,它会失败(尽管我收到另一个错误 - 0x80040202)。我在事件接收器的方法上放置了一个断点,QueryInterface以查看调用时会发生什么Advise()。我可以看到它QueryInterface被各种接口调用,最后它请求 my ITestEvents,我返回并设置 status S_OK。但是,该Advise()方法仍然返回上述错误。

我还尝试了另一件事:我已将.的 IID设置ITestEvents为的 GUID 。现在回来了!我什至模拟了一个事件,并且调用了事件接收器的方法!唉,这通常不能解决问题。如果您直接通过 IID 请求它 - 您会得到它,但它似乎没有被正确枚举,并且 VBScript 仍然无法正常工作。{00020400-0000-0000-C000-000000000046}IDispatchAdvise()S_OKInvoke()IConnectionPointContainerITypeInfo

我几乎没有使用 COM 的经验,所以我不知道从哪里开始。如果我使用IDispatchIID 就可以工作,这让我想知道ITestEvents接口是否需要一些自定义编组,尽管它是纯粹的IDispatch,所以我认为它应该由运行时处理好。

谢谢!

0 投票
1 回答
1638 浏览

sql - 使用 sql server 2012 发送短信

我正在尝试使用来自 sql server 的 web api 发送 SMS。我有错误sp_OAMethod。下面写的是相同的代码

0 投票
0 回答
168 浏览

powershell - PowerDesigner COM 对象在 Windows Server 2012 上为空

在 Windows Server 2012 上编写 PowerDesigner 脚本时遇到问题。我们在 Windows 10 和 Windows 7 上没有问题(我们在多台机器上尝试过)。

我们从 PowerShell 启动 PowerDesigner,如下所示:

在 Windows Server 2012 R2 上,$PowerDesigner 对象的所有属性都设置为 $null。如果我们尝试将属性设置为其他值,则会出现错误。例如,声明

失败并出现以下错误:

PowerDesigner 版本是 16.1.0.3637。

0 投票
0 回答
110 浏览

sql-server - 通过 sp_send_cdosysmail 生成的邮件正文中出现意外的空格

我在使用sp_send_cdosysmailOLE 自动化时遇到了一个奇怪的问题。我有一个存储过程,它将临时表转换为 html 表并将它们作为邮件正文发送到分发列表。

问题是当行数超过 100 (x 13 列)时,我的 html 表之间会插入几个空格。在标签之间插入空格并导致表格对齐问题。

例如,标签</td>更改为,</t d>从而导致单元格值变为[cell value]</t d><td style="background-color:blue;">[next cell value].

为了调试,我创建了一个 10000 个字符的字符串,aaaaaaaaaa....aaaaaaaa我看到每 990 个字符插入一个空格。当它们落在 html 标签之间时,它会产生问题。

邮件正文截图

当我创建我的 html 表时没有插入这些空格。 select @MsgBody返回中间没有空格的 html 字符串。但是当我每收到 990 个字符的邮件时,插入一个空格。

OLE 自动化 DLLodsole70.dll

请让我知道有什么办法可以避免这种情况吗?