问题标签 [ole]

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 回答
610 浏览

javascript - 使用 iDispatch DISPATCH_PROPERTYGET 在 IE 中拒绝权限

我有一个使用 ATL 编写的 ActiveX 控件,并且遇到了一个有点严重和令人困惑的问题。当使用 DISPATCH_PROPERTYPUT/METHOD 调用 iDispatch::Invoke 时,一切都很好。当我向 IE javascript 返回一个值时,在使用有效 BSTR 调用 VT_BSTR 的方法之后,它可以正常工作。

但是当我尝试时:

var stringValue = Object.stringValue;

它调用了使用 DISPATCH_PROPERTYGET 标志调用的 iDispatch,并且我将返回值设置为 VT_BSTR 并使用了有效的 BSTR(与我在方法调用中使用的完全相同),我在 IE 中得到了一个权限被拒绝的错误框。

当我将各种其他数据类型(长整型、整数、布尔值、...等)返回到 IE javascript 时,它可以正常工作(使用 propertyGet() 方法)。我只在返回 VT_BSTR 时获得权限被拒绝。

有任何想法吗?

0 投票
1 回答
2921 浏览

ms-access - 使用 OLE 对象在 MS Access 报告上打印的 Word 文档

多年来,我们一直在使用访问报告打印已保存到 OLE 对象列的 Word 2003 文档。我们正在使用 Access 2003。

出于某种原因,当我们复制 Word 2003 文档并将其粘贴到 OLE 对象中时,它无法正确打印,字母间距存在细微差别。

但是,如果我们使用几个月前复制和粘贴的 OLE 对象,则打印效果很好。

我能想到的只是导致此问题的 Office 2003 更新。

有没有其他人发现这个问题和任何解决方法?

非常感谢

我创建了一台没有任何 Office 服务包的机器,这已经解决了这个问题。

0 投票
1 回答
1787 浏览

c# - OLEVariant 到 .Net byte[]

我有一个伪装成 .Net 对象的 OLEVariant,我通过网络从客户端组件接收到该对象。我知道内容是一个字节数组,但我不知道如何将这些内容转换为本机 .Net 字节数组 (byte[])。关于如何完成转换的任何线索?

编辑:我们回答了我们自己的问题。要将 OleVariant(字节数组类型)转换为 .Net byte[] 需要在对象进入 .Net Array 时将其泵入,获取 Array 的上限,创建一个上限大小的新 byte[],然后最后做一个 Array.Copy()。

0 投票
1 回答
309 浏览

windows - DISPID 的属性或方法

是否可以知道给定的 DISPID(GetIDsOfNames 的结果)是方法、属性 getter 还是 setter?

0 投票
1 回答
1163 浏览

windows - 多个 ProgID 可以指向同一个 ClsID 吗?

我正在研究一组本质上是插件的东西,它们是 COM 服务器。每个插件都有一组配置数据,由另一个组件管理,配置数据的主键是插件的 ProgID。当插件需要访问配置项时,它会进行调用并传入其 ProgID 和所需属性的名称。这是一个遗留设计,我必须保持向后兼容性。

我现在需要加载每个插件的多个实例,每个实例都有一组不同的配置数据。我正在考虑的解决方案是为每个插件创建多个唯一的 ProgID,每个 ProgID 将指向插件的单个 ClsId。因此,插件的每个实例都将由其 ProgID 标识,ProgID 仍用作配置数据的主键,并且所有内容都是 100% 向后兼容的。

所以,问题:

  1. 这是一种可接受的技术吗?(多个 ProgID 都指向一个 ClsID)。
  2. 当我的插件加载时,它能够分辨出使用哪个 ProgID 来创建它吗?
0 投票
2 回答
368 浏览

windows - 如果我违反对 ProgID 施加的要求会怎样?

这篇 MSDN 文章指出,任何 ProgID 都必须满足几个正式要求,包括长度限制。但是,没有提及如果违反这些会发生什么。

我在我们的代码库中发现了几个地方的 ProgID 长度超过 39 个字符,但对它们来说一切似乎都正常,包括 ProgIDFromCLSID() 和 CLSIDFromProgID()。

由于违反这些要求很容易,因此知道这种违反的真正可能后果是什么会很有趣?

0 投票
2 回答
6010 浏览

c++ - 在 VARIANT 和 _variant_t 之间复制

我相当确定我可以安全地做到:

但是反过来呢:

我在我的应用程序中看到了一些非常奇怪的行为,我将其归结为与 COM 相关的线程问题。但后来我想知道我是否错误地使用变体搞砸了内存。在 funcB 中,VARIANT V 是为 COM 调用准备的安全数组的一部分。使用我的 V=vt 行,我是否在做一个浅拷贝,当同一个变体被释放两次时会破坏事情?

我真的很喜欢 _variant_t 并避免使用所有 ::VariantXXX 方法,有没有一种巧妙的方法可以在 funcB 中使用 _variant_t 来自动复制?

0 投票
1 回答
288 浏览

com - MFC自动化如何实现RemoveDocument OnCloseDocument

我有一个 MFC MDI 应用程序,我正在尝试用它实现自动化。我正在尝试创建一个 RemoveDocument。这是怎么做的?OnCloseDocument 导致问题。有这样做的“标准”吗?

0 投票
2 回答
2100 浏览

python - Python OLE2 日期格式转换

我创建了一个 python 脚本,它从 Word 文档中的 OLE 流中提取数据,但是在将 OLE2 格式的时间戳转换为更易于阅读的东西时遇到了麻烦:(

被拉出的时间戳是 12760233021 但我不能终生将其转换为 2007 年 3 月 12 日或类似的日期。

任何帮助是极大的赞赏。

编辑:好的,我已经在我的一个 word 文档上运行了脚本,该文档是在31/10/2009, 10:05:00创建的。OLE DocumentSummaryInformation 流中的创建日期是12901417500

另一个示例是在 2009 年 10 月 27 日 15:33:00 创建的 word doc,在 OLE DocumentSummaryInformation 流中给出了 12901091580 的创建日期。

有关这些 OLE 流属性的 MSDN 文档是http://msdn.microsoft.com/en-us/library/aa380376%28VS.85%29.aspx

将这些流拉出的 def 如下所示:

0 投票
2 回答
1239 浏览

ole - 为什么 ocx 控件不能正确注册?

我正在编写一个需要使用第三方 ocx 控件的应用程序。在我的 Inno Setup 脚本中,我包含以下行:

Source: C:\aPath\aControl.ocx; DestDir: {app}; Flags: restartreplace sharedfile regserver

看起来控件已注册,但安装的应用程序给我 EOleSysErrors 说在 Win2000 中工作时控件未注册。关于这里发生的事情或如何解决它的任何想法?

谢谢,一如既往!

ps 我正在使用管理员级别的控制。我认为在注册 ActiveX 控件时总是需要这样做。(是对的吗?)