- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个用 C++ 和 ATL 编写的 COM 对象。有一个图书馆,我知道他们的 IID 和 CLID。
我找不到在两个简单 COM 对象之间进行这种简单通信的示例。如何创建 IMoniker 以及如何将其添加到 ROT?然后,如何在不同进程/线程的其他 COM 中检索该对象的指针?
有没有人可以提供一个小例子?
编辑 : 更多信息:
我正在为 IE 编写一个附加组件。 IE 加载两个完全不相关的 COM 对象用于不同目的。一个是BHO(Browser Helper Obect),另一个是异步可插拔协议(protocol)(APP)我发现我可以通过ROT进行通信here .
最佳答案
尝试使用 CreateItemMoniker 而不是 CreatePointerMoniker - 它允许您为 ROT 中的对象指定名称。
您应该能够像这样注册您的对象:
DWORD RegisterInROT(LPCWSTR szObjName, IUnknown* pObj)
{
DWORD dwCookie = 0;
CComPtr<IRunningObjectTable> pROT;
if (GetRunningObjectTable(0, &pROT) == S_OK)
{
CComPtr<IMoniker> pMoniker;
if (CreateItemMoniker(NULL, szObjName, &pMoniker) == S_OK)
if (pROT->Register(0, pObj, pMoniker, &dwCookie) == S_OK)
return dwCookie;
}
return 0;
}
void RevokeFromROT(DWORD dwCookie)
{
CComPtr<IRunningObjectTable> pROT;
if (GetRunningObjectTable(0, &pROT) == S_OK)
pROT->Revoke(dwCookie);
}
void GetObjectFromROT(LPCWSTR szObjName, IUnknown** pObj)
{
CComPtr<IRunningObjectTable> pROT;
if (GetRunningObjectTable(0, &pROT) == S_OK)
{
CComPtr<IMoniker> pMoniker;
if (CreateItemMoniker(NULL, szObjName, &pMoniker) == S_OK)
pROT->GetObject(pMoniker, pObj);
}
}
关于visual-c++ - 如何使用运行对象表 (ROT) 在两个 COM 对象之间进行通信?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5156553/
我有一个小网站,我想在其中混淆一些文本,以保护不小心不及时阅读它的用户。 很像 imdb 上的关键词,你必须滚动才能显示它们。 我认为如果文本被标记,这将是一种很好的交互式方式来显示文本。 例子: H
目前,我正在编写一个程序,该程序使用 Java 对给定字符串执行 ROT-1 直到并包括 ROT-25。在我的研究之初,我发现this代码: public class Rot13 { public s
******************************************************************************* ROTS v1.05 Rem
我知道如何使用 *****.GetActiveObject(ProgId),但问题是我使用此代码行的几个应用程序没有添加到 ROT,即使它们已经打开,我得到HRESULT 错误。但是,如果我单击另一个
C++ 中字母的旋转 13 次换位未按我预期的方式工作。所有的字母首先都是大写的,所以只有 ASCII 数字 65-90 是相关的。如果字母超过 77,我会减去以回绕到“A”。 for (int j
我有这个方法可以测试我是否成功获得ROT: void func() { IRunningObjectTable *rot; qDebug() future = QtConcurren
基本上我必须使用 rot-13 将输入的字符数组转换为结果数组。所以,这就是我想做的事情:使用 for 循环,然后在 for 循环内使用条件来确定是否添加或减去 13 个位置。但我遇到的问题是编写 f
我知道有很多方法可以编写 ROT(n) 函数。但我不想有一些带有字符的表。 所以,我尝试编写一个带有解码器的简单 ROT(n),作为练习项目。编码功能工作正常。但解码器不断将“a”更改为“z”。 有人
这个问题不太可能对任何 future 的访客有帮助;它只与一个较小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于全世界的互联网受众。如需帮助使此问题更广泛适用,visit the
我需要获取正在运行的对象的特定实例(来自 C#)。可能有此应用程序的多个实例正在运行。不幸的是,此应用程序始终以完全相同的名称(例如,“!{DED89DB0-45B6-11CE-B307-080036
我已经对其进行了很多更改。而且,情况只会变得更糟。我不明白我做错了什么。从A-M,加13。从M-Z,减13。以前,至少我收到回信。现在,它们是符号。 import javax.swing.JOptio
我尝试实现 Rot13 并使其尽可能小,这是我目前的结果: if ( (c >= 'A') && (c = 'a') && (c = 'A') && (c = 'a') && (c = 'A'
我的代码多年来一直用于 PDF、HTML 文档和 XBRL 文档。从 IE 中的 BHO 或 Reader 中的 Adobe 插件调用代码。它在 ROT 中注册一个名字对象,并创建一个信号事件。
我想要一个函数,当传递一个只包含字母的字符串时,将字符串中的每个字母通过字母表旋转 X 个字符,其中 X 是函数的参数。著名的例子是当 X=13 时,称为 ROT-13 函数 <- ROTx(str,
我正在使用rot-js绘制带有六边形的网格,并希望将三 Angular 形和其他形状添加到 canvas 。我尝试过对 display.getContainer() 采取行动但这不起作用。需要做什么才
HZROT.cpp: #include "HZROT.h" std::string ROTEncode(std::string instring, int rot) { std::string
作为标准 Java 库之一的一部分,是否已经有 rot13() 和 unrot13() 实现?还是我必须自己编写并“重新发明轮子”? 它可能看起来像这样: int rot13 ( int c ) {
我正在尝试使用 R 对我的数据进行 PCA 分析,我发现 this nice guide , 使用 prcomp和 ggbiplot .我的数据是两种样本类型,每种类型具有三个生物学重复(即 6 行)
我有两个用 C++ 和 ATL 编写的 COM 对象。有一个图书馆,我知道他们的 IID 和 CLID。 我找不到在两个简单 COM 对象之间进行这种简单通信的示例。如何创建 IMoniker 以及如
我将网站上的所有电子邮件地址编码为 ROT-13,然后使用 Javascript 对地址进行解码(以避免垃圾邮件)。然而,在 IE 7 或 8 中,解码完全不起作用。在 Chrome、Safari、F
我是一名优秀的程序员,十分优秀!