问题标签 [queryinterface]

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

vba - 接口 VBA._Collection 的 QueryInterface 失败

在系统长时间执行期间,我们随机看到此错误。错误被我们的警报系统捕获,我们成功重试,并继续运行系统。我们在谷歌上发现的唯一点击似乎提到了损坏的安装。我们认为这里不是这种情况,因为我们的系统正在运行,得到错误,并且可以继续运行。

0 投票
1 回答
1133 浏览

vb.net - 接口的查询接口失败

我在 1.1 VB.NET 代码中使用互操作 COM 程序集,当我尝试设置类的属性时,我收到一条InvalidCastException消息“QueryInterface for Interface ... failed”。

对此有什么想法吗?

0 投票
2 回答
937 浏览

python - Query/GqlQuery 中的零结果

我如何知道使用 Query 接口或 GqlQuery 接口的查询结果是否返回零结果?使用.get()零结果会产生错误吗?如果是,最好的处理方法是什么?

0 投票
1 回答
512 浏览

mfc - IID_IPersistStreamInit 的 QueryInterface 方法退出工作

我有一个应用程序,我一直在使用它来解析 HTML 文档中的数据。该应用程序已经运行了几年,直到本周 IID_IPersistStreamInit 的 QueryInterface 方法开始失败。对 QueryInterface 的调用返回 -2147467262,它未通过 SUCCEEDED(hr) 测试。任何想法为什么这会停止工作?

谢谢,韦德

0 投票
1 回答
340 浏览

com - 无法访问 COM 接口

我正在处理最简陋的应用程序文档(令人震惊),其中的内容似乎具有误导性/矛盾性。我也会问软件公司,但他们的最后回复花了几周时间。与此同时......(谢谢)......

我正在尝试访问我们将调用的 GUI 应用程序的 [alledged] COM 接口:Xyz

我的问题:下面的结果是否暗示您没有可用的 COM 接口,需要注册等...

用户手册状态:

以下是与应用程序的 COM 接口能力相关的仅有的两个引用:

  1. “由于 Xyz 是一个使用 COM(组件对象模型)组件的 32 位应用程序,因此从网络运行 Xyz……”。

  2. “您可以访问 Xyz.Interface COM 对象来查询信息并以您喜欢的格式呈现”。

代码示例 1:

暗淡 xyz_com 设置 xyz_com= CreateObject("Xyz.Interface") xyz_com.Visible=false

结果 1:

“对象不支持此属性或方法:'可见'”

代码示例 2:

暗淡 xyz_com 设置 xyz_com= CreateObject("Xyz.Interface")

结果 2:

出现初始应用程序屏幕 - 如果我按照他们所说的那样以“服务器模式”启动应用程序 - 我认为我不会显示屏幕。

代码示例 3:

暗淡 xyz_com 设置 xyz_com= CreateObject("Xyz.Interface") xyz_com.QueryInterface()

结果 3:

“对象不支持此属性或方法:'QueryInterface'”

0 投票
1 回答
1891 浏览

c# - QueryInterface 在 COM 接口实现内部转换失败

我正在使用 C/C++ 编写的 Dll 在 C# 中创建一个工具来检索 CAN 网络(汽车中的网络)的消息。此 dll 可用作 COM 接口。

我的 c#-formclass 实现了这些 COM 接口之一。使用这些 COM 接口实例化其他变量(一切正常)。

问题:我的 C#-form 实现的接口有 3 个抽象函数。这些函数之一是由 dll 调用的,我需要自己实现它。在此函数中,我希望检索 COM 类型的表单范围变量的属性。

COM 库是 CANSUPPORTLib

表单范围的变量:

此变量也是表单范围的,并通过设备变量检索:

由dll调用并在c#中实现的函数

错误出现在这一行:

错误:

注意:可以有一个定时器时钟,每 100 毫秒检查一次我需要的消息。然后以与我现在完全相同的方式检索该消息。此计时器在表单启动时启动。仅当 Message(double) 将变量设置为 true(消息到达)时才进行检查。

在消息功能中启动定时器时钟时,我遇到与上述相同的错误

在表单启动时启动另一个线程也是不可能的。

有没有 COM-interop 经验的人?

当这个定时器

0 投票
1 回答
1111 浏览

delphi - 来自 Delphi 的 Supports -> QueryInterface 的访问冲突异常

我有以下代码:

此代码在我的应用程序执行期间被多次调用,但在某些特定情况下,它在 Supports() 方法中失败。更具体地说 - 它似乎属于 Supports() 方法中的 QueryInterface() 调用。

我检查了 FControlList 不是 nil 并且 FControlList[i] 不是 nil 并且它仍然会发生。

任何想法将不胜感激!!!

0 投票
3 回答
1777 浏览

delphi - Delphi中GetInterface/QueryInterface后的访问冲突

首先,我是 Delphi 和 COM 的新手,但我应该在 Delphi 中构建 COM 应用程序。我在互联网上阅读了很多文章和笔记,但是我仍然不清楚Delphi中的COM和COM。

我的资料来源 - http://www.everfall.com/paste/id.php?wisdn8hyhzkt(大约 80 行)。

我尝试创建一个 COM 接口和 Impl 类 - 如果我从 Delphi 调用接口方法(我通过 TestClient.Create 创建一个 impl 对象),它可以工作,但是如果我尝试从外部世界创建一个对象(从 Java,通过 com4j ) 我的应用程序因以下异常而崩溃:

如果我在 QueryInterface 中设置断点 - 它会中断,但是当我从函数中出来时 - 所有崩溃。

我做错了什么?我还缺少什么?我可以/应该读什么关于 COM(在 Delphi 中)以避免这样的愚蠢问题?

0 投票
3 回答
8992 浏览

delphi - Delphi:如何实现 IUnknown 的 QueryInterface?

在 Delphi 中,IUnknown声明为:

注意:输出参数是无类型的

在我的TInterfacedObject后代中我需要处理QueryInterface,所以我可以返回一个支持请求接口的对象:

问题来了:

德尔福抱怨:

运算符不适用于此操作数类型

显然,我不知道如何或将什么分配给无类型 out参数。我可以随机尝试,希望编译器不再抱怨:

忽略我编写的所有代码(如果需要):我如何QueryInterface在一个对象后代中实现TInterfacedObject


我一直试图解决的真正问题可以归结为我想要:

我想覆盖接口中的方法

以同样的方式:

可以在后代类中覆盖:

我想对接口也一样:

问题是我必须如何开始加载我的实现对象:

中不仅有两种方法IFoo,还有 6 种。然后如果我想添加另一个支持的接口:

事情变得非常笨拙非常快。

0 投票
1 回答
3303 浏览

c# - InvalidCastException,COM 组件上的 QueryInterface 调用失败

我正在尝试在我目前正在开发的 .net 应用程序中使用 PCAnywhere 的 Ole 自动化(VS 2010,c#)。PCA 12.5 附带了几个 tlb 文件,当我尝试通过 VS 添加作为引用时,我都收到一个错误,即“无法添加对 'E:\Dev\PcaOle\awrem32.tlb' 的引用”。请确保该文件是可访问的,并且它是一个有效的程序集或 COM 组件。',所以我所做的是使用 tlbimp.exe 生成互操作程序集并设法将创建的 DLL 作为引用导入没有问题。好的。这是我到目前为止的一些代码:

CRemoteDataManagerClass、RemoteDataExClass 和 AWREM32.Document 是程序集中的类。

所以我在第 5 行 ( ) 得到一个异常,data = (RemoteDataExClass)mng.RetrieveObjectEx("temp.chf", (short)2, null);它说明了以下内容:

无法将“winawsvr.CRemoteDataManagerClass”类型的 COM 对象转换为接口类型“winawsvr.IRemoteDataManager”。此操作失败,因为 IID 为“{82A1A806-8BA9-11CF-B95F-00A02412C812}”的接口的 COM 组件上的 QueryInterface 调用因以下错误而失败:Interfaz 不兼容(来自 HRESULT 的异常:0x80004002 (E_NOINTERFACE))。

我在这里能错过什么?也许与 COM 组件的注册方式有关?它们以前是在我什至尝试使用 regasm.exe 注册它们之前,只有 CLSID 在它们中有 LocalServer32 键。在我运行 regasm.exe 之后,这创建了两个,我相信:InprocHandler32 和 InprocServer32。我之前和之后都有同样的例外。

我在某处读到需要在设置为 STA 单元状态的线程中运行调用代码。所以我做了。还是没有变化。

我注意到的另一件事是,当我针对失败类所在的互操作程序集运行 ildasm.exe 时,我可以在 IRemoteDataManager 中看到以下行:.custom instance void [mscorlib]System.Runtime.InteropServices.GuidAttribute::.ctor(string) = ( 01 00 24 38 32 41 31 41 38 30 36 2D 38 42 41 39 // ..$82A1A806-8BA9 ...。带有 TLB 的 IRemoteDataManager 的 GUID82A1A806-8BA9-11CF-B95F-00A02412C812与异常中提到的 GUID 相同。这个 GUID 的前两个部分位于我从 ildasm 中提到的那一行(我猜其余部分只是为了显示问题而删减的),所以那里的一切似乎都很好。

我尝试使用 CRemoteDataManager(它是实现 IRemoteDataManager 的接口)而不是 CRemoteDataManagerClass,但同样的交易。在这两种情况下,异常总是提到 CRemoteDataManagerClass 反正。从我在 ildasm 中看到的情况来看,CRemoteDataManagerClass 实现了 CRemoteDataManager 和 IRemoteDataManager。也许 QueryInterface 在两者之一或其他方面都失败了。

我不知道。我显然到处都是。

我还研究了互操作日志记录,以了解 QueryInterface 失败的确切原因,但我发现的只是有关如何在 .netcompactframework 上执行此操作的文档。