You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PyQt5 QAxWidget访问RDP ActiveX的AdvancedSettings2接口?

解决PyQt5 QAxWidget访问MsRdpClient AdvancedSettings2接口的问题

在PyQt5中使用QAxWidget调用MsRdpClient10NotSafeForScripting时,不能直接通过属性访问的方式调用AdvancedSettings2(),需要通过querySubObject()方法获取该子接口对象,之后再对其进行属性设置或方法调用。

修改后的代码示例:

import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QAxContainer import QAxWidget


def window():
    app = QApplication(sys.argv)
    RDP_Widget  = QAxWidget()
    RDP_Widget.setControl('{A0C63C30-F08D-4AB4-907C-34905D770C7D}')
    RDP_Widget.setProperty('Server', '192.168.33.10')
    
    # 获取AdvancedSettings2接口对象
    advanced_settings = RDP_Widget.querySubObject("AdvancedSettings2")
    if advanced_settings:
        # 示例:设置高级属性,比如禁用位图缓存
        advanced_settings.setProperty("BitmapCacheSize", 0)
        # 如需调用接口方法,可使用dynamicCall,格式示例:
        # advanced_settings.dynamicCall("SomeMethodName(ParameterType)")
    
    RDP_Widget.setGeometry(50, 50, 800, 600)
    RDP_Widget.show()
    RDP_Widget.Connect()
    sys.exit(app.exec_())


if __name__ == "__main__":
    window()

关键说明:

  • querySubObject()是QAxWidget提供的用于获取ActiveX对象子接口的方法,参数为目标接口的名称字符串。
  • 获取到子接口对象后,可使用setProperty()、property()或dynamicCall()来操作其属性和方法,逻辑与操作主QAxWidget对象一致。
  • 可根据MsRdpClient的接口定义,设置AdvancedSettings2支持的各类属性,比如连接超时、显示参数等。

内容的提问来源于stack exchange,提问作者João Pinto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 19:22:05