问题标签 [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.
excel - 在 VBA 中复制 Excel 工作簿变量
假设您有 2 个 Excel.Workbook 变量 wbA 和 wbB。第一个变量是您分配给 Excel.Workbooks.Open 之类的工作簿。
现在我的问题:您如何将 wbA 分配给 wbB,以便 wbB 是 wbA 的副本,而不仅仅是对其的引用?
我尝试了一个简单的wbB = wbA
方法,但这似乎只是将 wbB 引用到 wbA。
非常感谢!
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
管理得很好:
(是的,它给出了一个关于无法重建外部类型库文件名的警告,这是因为我没有注册Foo.tlb
。这不是我担心的。)
如果OleView.exe
可以检查IBar
而不会崩溃,为什么我的代码会因为简单的事情而崩溃typeInfo.GetTypeAttr()
?我该如何解决?
delphi - 以编程方式编辑 Word 文档中的合并字段
我正在使用 Delphi 7 来处理邮件合并文档,该文档已经在 delphi 外部创建并使用合并字段进行了修复,我的目标是通过 delphi 7 编辑(更改)那些合并字段。
假设我有名为“field1”的合并字段,我必须进行编辑以使合并字段名称为“field2”。
我尝试了以下方法来打开和替换(编辑)合并字段,但我只能替换文本,合并字段实际上与替换前相同。
java - 如何将 Java 日期转换为 OADate 或反之亦然?
我想将 Java 日期转换为 Microsoft OLE 自动化 - OADate 类型或想将 OADate 转换为 Java 日期。Java的OADate的公式是什么?其实我已经在stackoverflow中搜索过,找不到答案,我得到了答案,想在这个社区分享。
例如: 43013.7659837963等于Thu Oct 05 18:23:01 EET 2017
sql-server - SQL Server - 队列激活过程中的 Ole 自动化过程
我想在将行插入表时调用 Web 服务。所以我启用Ole Automation Procedures
,像下面那样调用 Webservice,一切都很好。
但是,由于 Webservice 调用非常冗长,我需要使用 Service Broker 来完成。所以我创建了一个新的存储过程并将其作为我的激活参数传递,Queue
如下所示:
但这一次,没有发送请求。我检查并意识到该sp_OACreate
方法不会创建对象,因为它的值@Object
是null
在执行它之后。此外,当我打电话sp_OAGetErrorInfo
获取错误信息时,一切都是null
我正在使用 SQL Server 2016
如果您能在这里找到问题,我将不胜感激。
编辑
我发现如果我启用TRUSTWORTHY
该数据库一切正常。但启用它 可以打开安全漏洞。
有没有更好的方法来做到这一点?
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 服务失败。
任何有助于调试的建议将不胜感激。
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
,然后获取IConnectionPoint
的ITestEvents
IID,最后调用它的Advise()
方法。与 VBScript 一样,它会失败(尽管我收到另一个错误 - 0x80040202)。我在事件接收器的方法上放置了一个断点,QueryInterface
以查看调用时会发生什么Advise()
。我可以看到它QueryInterface
被各种接口调用,最后它请求 my ITestEvents
,我返回并设置 status S_OK
。但是,该Advise()
方法仍然返回上述错误。
我还尝试了另一件事:我已将.的 IID设置ITestEvents
为的 GUID 。现在回来了!我什至模拟了一个事件,并且调用了事件接收器的方法!唉,这通常不能解决问题。如果您直接通过 IID 请求它 - 您会得到它,但它似乎没有被正确枚举,并且 VBScript 仍然无法正常工作。{00020400-0000-0000-C000-000000000046}
IDispatch
Advise()
S_OK
Invoke()
IConnectionPointContainer
ITypeInfo
我几乎没有使用 COM 的经验,所以我不知道从哪里开始。如果我使用IDispatch
IID 就可以工作,这让我想知道ITestEvents
接口是否需要一些自定义编组,尽管它是纯粹的IDispatch
,所以我认为它应该由运行时处理好。
谢谢!
sql - 使用 sql server 2012 发送短信
我正在尝试使用来自 sql server 的 web api 发送 SMS。我有错误sp_OAMethod
。下面写的是相同的代码
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。
sql-server - 通过 sp_send_cdosysmail 生成的邮件正文中出现意外的空格
我在使用sp_send_cdosysmail
OLE 自动化时遇到了一个奇怪的问题。我有一个存储过程,它将临时表转换为 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
请让我知道有什么办法可以避免这种情况吗?