问题标签 [moniker]

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 投票
2 回答
1891 浏览

winapi - 获取 COM 服务器的进程 ID

我正在通过将 Windows 消息直接发送到 HWND 和调用自动化应用程序公开的 COM 服务器相结合来进行一些自动化。

如果有多个实例在运行,我需要能够确定 COM 服务器的进程 ID,以便我可以通过 COM 调用访问同一个实例,作为我向其发送 Windows 消息的实例。

我可以用正在运行的对象表枚举所有正在运行的 COM 服务器并取回它们的名字,但是 COM 对象本身没有公开任何方法,我可以使用它来获取窗口句柄、线程 ID、进程 ID 或任何类似的东西.

有没有办法根据名字对象或名字对象的实际绑定 COM 对象来确定 COM 服务器的进程 ID 是什么?

谢谢!

0 投票
1 回答
2823 浏览

visual-c++ - 如何使用运行对象表 (ROT) 在两个 COM 对象之间进行通信?

我有两个用 C++ 和 ATL 编写的 COM 对象。有一个图书馆,我知道他们的 IID 和 CLID。

我找不到在两个简单 COM 对象之间进行这种简单通信的示例。如何创建 IMoniker 以及如何将其添加到 ROT?然后,如何在不同进程/线程的其他 COM 中检索该对象的指针?

有没有人可以提供一个小例子?

编辑:更多信息:

我正在为 IE 编写一个附加组件。IE 加载两个完全不相关的 COM 对象用于不同目的。一个是 BHO(Browser Helper Obect),另一个是异步可插拔协议(APP)我发现我可以在这里通过 ROT 进行通信。

0 投票
1 回答
712 浏览

python - Python WMI 名字对象问题

我无法使用 WMI 查询日志“安全性”。其他日志工作正常。这是我使用的:

它返回空结果,并在安全日志中创建 reacord“审核失败”。正如我所提到的,我可以查询所有其他日志,但不是特定的。所以我想问题出在

c = wmi.GetObject(这里有问题)

0 投票
1 回答
696 浏览

wcf - 从 VB6 调用 WCF 时如何增加 maxReceivedMessageSize?

目前我有: 1) 一个 WCF 设置来返回一个 xml 块(特别是它是来自 Exchange 2003 的日历的内容)。2 ) 带有命令的 vb6 表单通过构建在服务名字对象上的对象访问 WCF,包括 WSDL 合同文件的内容。

仅当传递的字符串具有可接受的大小时,这才能正常工作。当我尝试返回在 WCF 端生成的整个 xml 时,我遇到以下错误:“已超出传入消息的最大消息大小配额 (65536)。要增加配额,请在适当的绑定元素上使用 MaxReceivedMessageSize 属性。”

当我将绑定配置添加到 WCF 应用程序配置以增加 maxReceivedMessageSize 时,这没有任何效果 - 大概是因为 VB6 客户端对此视而不见。(生成的 WSDL 合同甚至不包括其 xml 中的值)

阅读*,建议我需要在客户端进行类似的配置更改。所以我创建了一个 VB6.EXE.CONFIG 文件并将绑定配置详细信息复制到此文件。然后我扩展了绰号以包括:binding=WSHttpBinding_IExchange, bindingNamespace='Exchange', bindingConfiguration='ExchangeBinding'

但是,我仍然收到有关大小配额的相同错误消息。

当上面的名字对象的 binding 或 bindingNamespace 元素拼写错误时,我得到一个预期的错误,但是当 bindingConfiguration 元素拼写错误时,我没有得到任何错误,就好像这个元素无论如何都无关一样。

我似乎有碎片,但目前没有可行的解决方案。有什么想法吗?

  • obj 对象被声明为接口代理类型。然后将名字对象设置为仅包括地址和绑定类型。由于您只使用 wsHttpBinding 的默认设置,因此您不需要提供 bindingConfiguration 值。如果您需要覆盖绑定的任何默认设置,您可以提供一个名为 file.exe.config 的应用程序配置文件并将其放在客户端的程序目录中
0 投票
1 回答
1439 浏览

c# - 不同分区中的 COM+ 对象激活

我创建了一个 COM+ 域分区,然后将其映射到 Windows 2008 服务器计算机,并将 COM+ 应用程序导入其中。

我尝试使用以下 C# 代码从服务器上的特定分区远程激活对象:

但我得到了这个例外:

无法创建通道接收器以连接到 URL 'partition:{41e90f3e-56c1-4633-81c3-6e8bac8bdd70}/new:MyObject'。可能尚未注册适当的频道。

有谁知道如何完成这样的激活?

0 投票
1 回答
78 浏览

.net - 来自网络服务组件的 COM 提升

我正在编写一个 .NET 插件程序集,该程序集加载到使用“网络服务”凭据运行的预先存在的服务中。

插件需要执行一些提升的操作,为此我需要启动提升的托管 COM 服务器。

我可以访问插件代码和 COM 服务器代码。

我的要求是在不以任何方式提示用户的情况下提升 COM 服务器启动。服务器需要按需启动并在工作完成后终止。

如果有人可以帮助我如何实现这一目标,那将会有所帮助。谢谢。

如果在安装时需要进行任何更改,则可以这样做。

PS:我发现了“COM Elevation Moniker”,但它似乎有助于调出不符合我要求的 UAC 海拔对话框。

0 投票
1 回答
526 浏览

winapi - 如何异步读取 WPD MTP 数据流?

我的示例应用程序从一个函数中获取一个COM IStream实例。IPortableDeviceResources::GetStream()我想使用这个 IStream 对象异步读取设备对象的内容。如何使用异步名字对象来做到这一点?

0 投票
0 回答
717 浏览

delphi - COM 海拔名称

问候!

想知道如何为程序创建 COM ActiveX 模块,如有必要,将使用提升的权限调用该模块。

使用 Delphi XE5 和 Windows 8.1 Pro x64 来完成所有这些工作。

制作了ActiveX Library,添加了COM Object,添加了测试功能。在系统中注册,使用Run>ActiveX Server->Register。手术成功。

这是我的图书馆有一个 GUID:

对象接口:

如果您以通常的方式调用,那么它可以工作:

之后我添加到注册表 LocalisedString, Elevation \ Enabled, Elevation \ IconReference

接下来,调用代码:

请求来自 UAC 以提供法律,我单击是。

之后,出现“类未注册”错误。

我究竟做错了什么?毕竟几乎都想通了,很可能还是小细节!

附言

一般来说,可以从DLL库中调用COM对象而不在系统中注册它并请求提升吗?所以 LN 更容易,并且会自动解决某种其他问题。

0 投票
1 回答
554 浏览

wcf - 使用名字对象字符串从 Excel 调用 WCF 服务并收到 maxReceivedMessageSize 的错误 65356 已超出

我可以使用 mexTcpBinding 和名字对象字符串成功调用 WCF 服务 下面是用于构建名字对象字符串的 vb 脚本

web.config 中的服务配置是

当我调用服务中返回超过 65356 大小的数据的方法之一时,我收到错误消息,提示“已超出传入消息的最大消息大小配额 (65534)。要增加配额,请使用适当的 MaxReceivedMessageSize 属性绑定元素"

现在我正在努力将这个属性设置为更高的值。我尝试创建 Excel.exe.config 文件并放入 Excel.exe 文件夹。我现在想在我的情况下如何将 MaxReceivedMessageSize 设置为值“8388608”,以及需要设置哪个配置文件 Excel.exe.config 或其他可以告诉名字对象代理使用的东西。谁能帮我解决这个棘手的问题。

我已经创建了 Excel.exe.config 文件,并在其中添加了以下内容,但是它没有采用这些设置,任何人都可以帮我解决这个问题。或确认这是名字代理的固有问题或限制?

0 投票
2 回答
1375 浏览

wcf - 从 excel 调用 WCF 服务会导致收到的消息大小出错

我正在使用名字对象字符串从 excel VBA 代码调用我的 WCF 服务。但是,当我的服务返回大数据作为响应时,excel 会给出错误消息

“已超出传入消息 (65534) 的最大消息大小配额。要增加配额,请在适当的绑定元素上使用 MaxReceivedMessageSize 属性”

这是名字对象字符串:

为了解决这个问题,我增加了 WCF 服务的 web.config 文件的大小,如下所示:

根据有关此主题的各种论坛,上述解决方案应该有效。但这在我的情况下从 excel 调用时不起作用。我需要从 excel 端做些什么来设置 maxReceivedMessageSize 吗?如果是,那么我该如何使用 VBA 代码来做到这一点?

附加信息:

我使用 Office 2010(带 VBA)、Windows 7 Prof、64 位操作系统