问题标签 [idispatch]

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

gcc - 使用 GCC 编译器与 ActiveX 通信

如何从我的 gcc 编译的应用程序中引用 ActiveX 库并与之通信?

0 投票
4 回答
686 浏览

c# - C++ DLL 调用 C# DLL 的选项有哪些?

我有一个 C++ DLL,它需要在 C# 类库中调用一个函数(传递一个值,返回一个值)。

我唯一的选择是给 C# DLL 一个 COM 接口并使用 IDispatch 从 C++ 调用它吗?

这是最好的方法吗?

0 投票
1 回答
1688 浏览

c++ - 我可以从 DISPARAMS 获得正确的 IDispatch 吗?

我想获得一个正确的IDispatch指针,然后将其转换为CMyDispatch指针,稍后再使用它。

即在javascript中我想做这样的事情:

其中xyCMyDispatch的实例。

CMyDispatch以这种方式返回给 javascript:

在带有DISPATCH_PROPERTYPUT标志的CMyDispatch.Invoke()中,我想获取包含y值的CMyDispatch实例。

使用以下代码时,pDispatch设置为一些垃圾:

我应该怎么做才能获得正确的CMyDispatch指针?谢谢你。

0 投票
2 回答
774 浏览

c++ - “纯”IDispatch 接口是否需要代理/存根 DLL?

..对于进程外服务器,或者我可以在不注册代理/存根的情况下调用调度接口吗?

有问题的界面非常高级,所以性能不是问题,我可以让整个事情免注册,这是一个很大的优势

0 投票
2 回答
3889 浏览

internet-explorer - 如何在给定 PID 的情况下找到 IE8 窗口的 IWebBrowser2 指针?

到目前为止,我已经成功地使用以下函数来检索指向正在运行的 Internet Explorer 实例的 IWebBrowser2 指针,假设它是 PID。

我所做的是通过启动一个explorer.exe进程CreateProcess,然后使用上述函数将 IWebBrowser2Ptr 检索到它(以便我可以摆弄浏览器)。

不幸的是,这似乎不再适用于 Internet Explorer 8,因为 IE8 似乎重用了进程——至少在某种程度上如此。对于两个代码序列,例如:

此代码的第一次运行正常,第二次无法检索 pWebBrowser 窗口。

经过一番调试,发现该findBrowserByPID函数确实找到了很多浏览器窗口(并且在启动第二个浏览器实例后找到了更多),但它们都不属于新启动的进程。似乎所有的窗口都属于第一个启动的 IE 进程。

有人知道将 IWebBrowser2 指针指向某个 IE8 实例的另一种方法吗?或者有没有办法用 IE8 禁用这种明显的“重用”进程?

0 投票
2 回答
269 浏览

object - 响应所有属性的 IDispatch 对象?

我想创建一个 IDispatch 对象,它为每个属性返回一个值。向它询问“foo”,它会返回一些东西。“bar”返回一些东西。“faid1jhgi31jifj”也是如此。

任何指针?

0 投票
1 回答
240 浏览

c++ - 枚举机器上所有 IDispatch 实现对象

我想枚举一台机器上的所有 IDispatch 支持对象。目前我需要知道类 id 或 prog id 是什么,但是,为了检查我的机器,我想知道我是否可以枚举所有实现 IDispatch 的对象。

这甚至可能吗?

任何帮助将非常感激 :)

0 投票
2 回答
1813 浏览

windows - 在 C++ 中挂钩 IDispatch v-table

我正在尝试修改IDispatch系统中已经存在的接口的行为。为此,我的计划是在运行时挂钩到对象 v-table 并修改指针,使其指向自定义挂钩方法。

如果我能让它工作,我可以向现有对象添加新方法和属性。好的。

首先,我尝试连接到 v-table for IUnknown(从中IDispatch继承)并且效果很好。但是,尝试更改条目IDispatch根本不起作用。什么都没有发生,代码就像没有钩子一样工作。

这是代码,它非常简单,所以理解起来应该没有任何问题

0 投票
3 回答
5882 浏览

interface - COM 双接口

COM 中的双接口是能够通过 DispInterface 或 VTable 方法访问的接口。

现在有人可以告诉我这两种方法之间到底有什么区别吗?

我认为 VTable 是一个虚拟表,它在实现具有可以在子类中覆盖的虚拟函数的类层次结构时保存指向不同函数的指针。但是我看不出这与 COM 中的双接口有什么关系?

0 投票
2 回答
854 浏览

internet-explorer - 对象标签上的 IE attachEvent 导致内存损坏

我在具有以下事件的嵌入式 IE7/8 HTML 页面中有一个 ActiveX 控件[id(1)] HRESULT MessageReceived([in] BSTR id, [in] BSTR json)。在 Windows 上,该事件是使用 注册的OCX.attachEvent("MessageReceived", onMessageReceivedFunc)

以下代码在 HTML 页面中触发事件。

在我使用应用程序验证程序启用 gflags.exe 后,出现以下奇怪的行为:在执行 JavaScript 回调的 Invoke() 之后,来自 pvars[1] 的 BSTR 出于某种未知原因被复制到 pvars[0] !pvars 的 delete[] 导致双重释放相同的字符串,然后以堆损坏结束。

有人知道这里发生了什么吗?这是一个 IE 错误还是在 OCX 实现中我缺少一个技巧?

如果我使用如下标签:

...奇怪的复制操作不会发生。

由于 Fire_MessageReceived() 的调用者负责释放 BSTR,因此以下代码似乎也可以。

谢谢!