Qt实现远程桌面控制

  1. QT工程文件中添加axcontainer模块
  2. 放一个QAxWidget到UI中,双击放入的控件,选择Microsoft RDP Client Control - version 10,完成后,控件会有绿色虚线覆盖
  3. 设置属性
//头文件#include   #include 
ui.axWidget->setProperty("Server", "192.168.11.184"); //远程连接IP
ui.axWidget->setProperty("UserName", "Administrator");    //用户名
ui.axWidget->setProperty("ClearTextPassword", "123");     //用户密码
ui.axWidget->setProperty("DisconnectedText", tr("Disconnected")); // 未连接时QAxWidget控件显示的字符串
ui.axWidget->setProperty("DesktopWidth", ui.axWidget->width());   //指定宽度
ui.axWidget->setProperty("DesktopHeight", ui.axWidget->height()); //指定高度

QAxObject *pAdvancedObject = ui.axWidget->querySubObject("AdvancedSettings7");
pAdvancedObject->setProperty("EnableCredSspSupport", true);  //必须设置,否则远程连接失败
pAdvancedObject->setProperty("BitmapPeristence", 1);         //位图缓存
pAdvancedObject->setProperty("Compress", 1);                 //启用压缩,减小带宽
pAdvancedObject->setProperty("singleConnectionTimeout", 10); //超时时间

4.连接和断开

ui.axWidget->dynamicCall("Connect()"); //连接
ui.axWidget->dynamicCall("Disconnect()"); //断开连接

5.如果出现需要输入凭据,可以通过下面的语句先注册凭据再连接

//头文件  #include 
WinExec("cmd /c cmdkey.exe /add:192.168.11.184 /user:Administrator /pass:123", SW_HIDE);
//如果为IPv6远程访问,使用以下语句
WinExec("cmd /c cmdkey.exe /generic:2020::3 /user:Administrator /pass:123", SW_HIDE);

//win10系统凭据需要改为/generic:TERMSRV/2020::3

参考连接
Qt+Win10使用QAxWidget控件实现远程桌面控制

你可能感兴趣的:(qt)