问题标签 [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.
vba - 接口 VBA._Collection 的 QueryInterface 失败
在系统长时间执行期间,我们随机看到此错误。错误被我们的警报系统捕获,我们成功重试,并继续运行系统。我们在谷歌上发现的唯一点击似乎提到了损坏的安装。我们认为这里不是这种情况,因为我们的系统正在运行,得到错误,并且可以继续运行。
vb.net - 接口的查询接口失败
我在 1.1 VB.NET 代码中使用互操作 COM 程序集,当我尝试设置类的属性时,我收到一条InvalidCastException
消息“QueryInterface for Interface ... failed”。
对此有什么想法吗?
python - Query/GqlQuery 中的零结果
我如何知道使用 Query 接口或 GqlQuery 接口的查询结果是否返回零结果?使用.get()
零结果会产生错误吗?如果是,最好的处理方法是什么?
mfc - IID_IPersistStreamInit 的 QueryInterface 方法退出工作
我有一个应用程序,我一直在使用它来解析 HTML 文档中的数据。该应用程序已经运行了几年,直到本周 IID_IPersistStreamInit 的 QueryInterface 方法开始失败。对 QueryInterface 的调用返回 -2147467262,它未通过 SUCCEEDED(hr) 测试。任何想法为什么这会停止工作?
谢谢,韦德
com - 无法访问 COM 接口
我正在处理最简陋的应用程序文档(令人震惊),其中的内容似乎具有误导性/矛盾性。我也会问软件公司,但他们的最后回复花了几周时间。与此同时......(谢谢)......
我正在尝试访问我们将调用的 GUI 应用程序的 [alledged] COM 接口:Xyz
我的问题:下面的结果是否暗示您没有可用的 COM 接口,需要注册等...
用户手册状态:
以下是与应用程序的 COM 接口能力相关的仅有的两个引用:
“由于 Xyz 是一个使用 COM(组件对象模型)组件的 32 位应用程序,因此从网络运行 Xyz……”。
“您可以访问 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'”
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 经验的人?
当这个定时器
delphi - 来自 Delphi 的 Supports -> QueryInterface 的访问冲突异常
我有以下代码:
此代码在我的应用程序执行期间被多次调用,但在某些特定情况下,它在 Supports() 方法中失败。更具体地说 - 它似乎属于 Supports() 方法中的 QueryInterface() 调用。
我检查了 FControlList 不是 nil 并且 FControlList[i] 不是 nil 并且它仍然会发生。
任何想法将不胜感激!!!
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 中)以避免这样的愚蠢问题?
delphi - Delphi:如何实现 IUnknown 的 QueryInterface?
在 Delphi 中,IUnknown
声明为:
注意:输出参数是无类型的
在我的TInterfacedObject
后代中我需要处理QueryInterface
,所以我可以返回一个支持请求接口的对象:
问题来了:
德尔福抱怨:
运算符不适用于此操作数类型
显然,我不知道如何或将什么分配给无类型 out
参数。我可以随机尝试,希望编译器不再抱怨:
忽略我编写的所有代码(如果需要):我如何QueryInterface
在一个对象后代中实现TInterfacedObject
?
我一直试图解决的真正问题可以归结为我想要:
我想覆盖接口中的方法
以同样的方式:
可以在后代类中覆盖:
我想对接口也一样:
问题是我必须如何开始加载我的实现对象:
中不仅有两种方法IFoo
,还有 6 种。然后如果我想添加另一个支持的接口:
事情变得非常笨拙非常快。
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 上执行此操作的文档。