问题标签 [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 投票
0 回答
15 浏览

ole - Typelib Information (TLBInf32.dll) 获取对 iTypeInfo 对象的引用

TLBInf32.dll 的 TypeInfo 类有一个隐藏的 iTypeInfo 条目。但是当我想查询这个引用的接口 iTypeInfo (00020401-0000-0000-C000-000000000146) 时,会报错。

但是,TLBInf32.dll 的 TypeLibInfo 类有一个隐藏的 iTypeLib 条目。在这里,当我查询 iTypeLib 接口(00020402-0000-0000-C000-000000000046)时,我找到了它。

TLBInf32.dll 的 TypeInfo 类的 iTypeInfo 条目的哪个接口 IID 支持?我将如何获得可以与 oleaut32 一起使用的底层 iTypeInfo?

0 投票
1 回答
69 浏览

delphi - GetDetailsOf 返回属性名称而不是值(delphi 2007)

我从来不需要做太多的COM,所以几乎没有经验。几乎所有文档(当然来自 MS)都不包含 Delphi 示例。在我的代码示例中,我看不出哪里出错了。该代码是从网络上几个位置的片段中借用的。有些是VB。我只找到了 Free Pascal 的一个线程,而且它不完整。这会运行,但显示为名称和值显示相同的字符串。我希望有人能看到我错过了什么。我认为问题出在以下行:

PropValue := OleFolder.GetDetailsOf(OleFolderItem, i);

我不知道是否需要做一些事情来初始化“OleFolderItem”。

0 投票
0 回答
79 浏览

vba - 在 MS Word 中放置另一个应用程序的窗口

我的问题是,当 Word 已使用 Windows API 设置为该窗口的父级时,如何将属于我们的 win32 应用程序的窗口放置在 MS Word 中SetParent(HandleOfMyWindow, HandleOfWord)

我的问题的背景是,我们围绕一个系统构建了很多代码,我们在 Word 中安装了一个宏,当从功能区上的按钮启动时,它会向我们的应用程序发送一条消息,告诉它创建一个给定的窗口并显示它Word 里面。然后,此窗口可以通过将 Word 用作 OLE 自动化服务器将文本等插入 Word。多年来,这在大多数情况下都运行良好。它仍然是,但有时窗口显示在 Word 的可见区域之外。例如,它可以是 Word 右边缘右侧 900 像素。它通常可以通过使 Word 在多个监视器上非常宽来找到。问题仅存在于多显示器系统上。它通常受到我们的应用程序和 Word 在显示器上的放置方式的影响。它也可能受到设置为主监视器的监视器的影响。

我们的应用程序是使用 Delphi 创建标准的 win32 exe 制作的。在我们开始使用 VCL Styles 之后,问题可能会变得更糟。

我尝试使用 Windows API SetBounds 和 SetWindowPos 放置我们的窗口,仅使用窗体的顶部和左侧属性,以及其他一些东西。它只是永远不会在我认为我的代码告诉它的地方弹出。大多数时候它是可见的,一切都很好,但仍然在我设定的另一个位置。我只是可以找出放置它的任何系统。

然而,在写这篇文章时,我发现了一些可能相关的东西,但仍然没有解决方案:

  1. https://en.delphipraxis.net/topic/4882-a-big-and-very-strange-bug-with-high-dpi-vcl-style-and-form-constraints/
  2. 来自 SetParent 文档:“如果 hWndNewParent 和 hWndChild 在不同的 DPI 感知模式下运行,可能会出现意外行为或错误。”