我正在开发一个内嵌有Shockwave Flash Player的Windows应用程序.C ++部分应该能够调用Flash电影方法,反之亦然。最初的实验是使用MFC完成的,但是可以,但是现在我想将其移植到Qt是因为它可以简化UI开发.Qt有QAxObject可以保存通过setCotrol()方法分配给它的ActiveX控件,该方法应该获取ActiveX的classID或其名称,因为classID比名称更可靠,并且因为尚未找到使用名称访问Flash Player ActiveX的示例,现在我想知道如何从OS的系统注册表中检索该classID。我想对于每台计算机,某些特定的activeX classID可能会有所不同(如果我如果是真的,那我需要访问注册表,找到shockwave activeX classid,然后将其传递给QaxObject :: setControl()方法,该怎么做?

忘了提一下,在MFC应用程序中,一旦从可用系统控件列表中选择ActiveX类型,ActiveX控件就会自动获取请求的ActiveX。在Qt中,您没有这样的选择。



阅读此http://www.nirsoft.net/utils/acm.html我知道CLASSID在任何机器上都是常量。如果是,那么请放弃我的问题,因为如果ProgID始终相同,则没有理由通过ProgID在特定计算机上搜索ActiveX密钥。
谢谢。

最佳答案

最好通过mime类型从注册表中查询。您可以在此处找到有关存储位置的详细信息:

http://msdn.microsoft.com/en-us/library/aa751976%28v=vs.85%29.aspx

您可以在注册表中查找mimetype并从中获取CLSID。您也可以按名称查找它;该文档中说明了两个注册表项的位置。

关于c++ - 使用C++从系统注册表中检索ActiveX classID,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7895704/

10-12 17:41