• Qt+Win10使用QAxWidget控件实现远程桌面控制


    Windows开始菜单-运行-输入mstsc,可以打开自带的远程桌面连接工具。如果想使用Qt来实现这个工具,怎么弄?

    一、Win10环境的配置

    1、Win10-我的电脑-属性-远程桌面-开启

    2、打开控制面板-管理工具(Win11是【Windows工具】)-本地安全策略-安全选项

    账户:使用空密码的本地账户只允许进行控制台登录

    根据你的需要选择启用或禁用,如果要被远程的电脑没有设置开机密码,那么请选择【禁用】,然后务必重启电脑才能生效!!

    或者Windows-开始菜单-运行:

    输入secpol.msc或者gpedit.msc也能打开,本地策略,安全选项

    二、Qt工程

    1、pro文件

    QT  += axcontainer

    2、 ui文件

    在ui上拖放控件:QAxWidget控件,右键设置控件: Microsoft RDP Client Control - version 12

    3、源码

    1. #include "formrdp.h"
    2. #include "ui_formrdp.h"
    3. #include
    4. #include
    5. FormRDP::FormRDP(QWidget *parent)
    6. : QWidget(parent),
    7. ui(new Ui::FormRDP)
    8. {
    9. ui->setupUi(this);
    10. init();
    11. }
    12. FormRDP::~FormRDP()
    13. {
    14. delete ui;
    15. }
    16. void FormRDP::init()
    17. {
    18. //参数的说明,详情见
    19. // https://learn.microsoft.com/en-us/windows/win32/termserv/msrdpclient10
    20. // https://learn.microsoft.com/en-us/windows/win32/termserv/imstscadvancedsettings-interface
    21. // https://learn.microsoft.com/en-us/windows/win32/termserv/imsrdpclientadvancedsettings-interface
    22. //普通参数
    23. ui->axWidget->setProperty("Server", "192.168.216.100"); //远程连接IP
    24. ui->axWidget->setProperty("UserName", "hello"); //用户名
    25. ui->axWidget->setProperty("ClearTextPassword", "1"); //用户密码(这种方式每次都要手动输入密码)
    26. ui->axWidget->setProperty("DesktopWidth", 800); //指定宽度
    27. ui->axWidget->setProperty("DesktopHeight", 600); //指定高度
    28. ui->axWidget->setProperty("ConnectingText", "Connecting");
    29. ui->axWidget->setProperty("DisconnectedText", "Disconnected");
    30. //普通参数,可选项
    31. ui->axWidget->setFocusPolicy(Qt::StrongFocus); //设置控件接收键盘焦点的方式:鼠标单击、Tab键
    32. ui->axWidget->setProperty("DisplayAlerts", false); //不显示任何警告信息
    33. ui->axWidget->setProperty("DisplayScrollBars", true); //显示滚动条
    34. ui->axWidget->setProperty("ColorDepth", 32); //画质/位深,32/24/16/15/8
    35. //高级参数
    36. QAxObject *pAdvancedObject = ui->axWidget->querySubObject("AdvancedSettings7");
    37. pAdvancedObject->setProperty("ClearTextPassword", "1"); //用户密码(这种方式每次都不需要手动输入密码)
    38. pAdvancedObject->setProperty("EnableCredSspSupport", true); //必须设置,否则远程连接失败
    39. //高级参数,可选项
    40. pAdvancedObject->setProperty("BitmapPeristence", 1); //位图缓存
    41. pAdvancedObject->setProperty("Compress", 1); //启用压缩,减小带宽
    42. pAdvancedObject->setProperty("singleConnectionTimeout", 10); //超时时间,s
    43. }
    44. void FormRDP::autosize()
    45. {
    46. int width = ui->axWidget->width();
    47. int height = ui->axWidget->height();
    48. ui->axWidget->setProperty("DesktopWidth", width); //指定宽度
    49. ui->axWidget->setProperty("DesktopHeight", height); //指定高度
    50. }
    51. void FormRDP::on_pushButton_connect_clicked()
    52. {
    53. autosize();
    54. ui->axWidget->dynamicCall("Connect()"); //连接
    55. }
    56. void FormRDP::on_pushButton_disconnect_clicked()
    57. {
    58. ui->axWidget->dynamicCall("Disconnect()"); //断开连接
    59. }

    详细的参数说明

    https://learn.microsoft.com/en-us/windows/win32/termserv/msrdpclient10

    https://learn.microsoft.com/en-us/windows/win32/termserv/imstscadvancedsettings-interface

    https://learn.microsoft.com/en-us/windows/win32/termserv/imsrdpclientadvancedsettings-interface

    4、运行效果

    x、题外话

    Windows账户怎么改名?需要修改两个地方

    1、控制面板需要更改账户名称

    2、本地用户和组需要修改 

    3、以上两个步骤完成之后,发现在C盘用户文件夹下的用户名仍没有改变。怎么办?

    (1)打开注册表,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Profilelist;

    (2)接着在ProfileList文件夹下的分支,找到含有ProfileImagePath并指向用户文件夹的值。然后双击ProfileImagePath,出现新的界面,将用户名进行更改, 点击确定即可。

    (3)最后,检查环境变量是否也有更改重定向路径。

    右键点击此电脑→属性→关于→高级系统设置→环境变量。

    win10系统更改用户名后文件夹名字怎么改?

    看看User后面的用户名是否是重命名后的用户名。不是的话可以手动修改。

  • 相关阅读:
    Temu是否需要压货?Temu售后政策——站斧浏览器
    mongofiles如何访问指定的存储桶
    Python全攻略:基础学习、爬虫编程实战和面试技巧
    华为李鹏:到 2025 年智能算力需求将达到目前水平的 100 倍
    STM32-EXTI中断
    【注解和反射】获取类运行时结构
    [ 2024春节 Flink打卡 ] -- 理论基础
    交通物流模型 | 基于交通图卷积长短时记忆网络的网络级交通流预测
    PTE 口语练习准备(一)
    贝叶斯推理三种方法:MCMC 、HMC和SBI
  • 原文地址:https://blog.csdn.net/libaineu2004/article/details/127995197