wpf调用远程桌面

这篇具有很好参考价值的文章主要介绍了wpf调用远程桌面。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近需要开发一个WPF 调用远程桌面的功能,网上找了一些资料+自己测试。发现有一些坑,这里记录一下。避免以后遇到同类问题。
1.控件选择
主要利用的是微软的自带的远程桌面连接控件,我尝试的是 AxMsRdpClient8 和AxMsRdpClient8NotSafeForScripting这两个控件。

经过尝试,AxMsRdpClient8 在连接win10的电脑是正常,连接win7连不上。 后面就放弃了。选择了
AxMsRdpClient8NotSafeForScripting

但是这两个控件,都是在Form下的,所以我们需要用WindowsFormsHost来承载。
首先。需要添加com组件。添加步骤
wpf调用远程桌面
然后选选择需要导出的组件wpf调用远程桌面

(在这里导入的时候,遇到提示工具箱未激活的问题,因为我们当前建的是wpf的程序,所以工具箱需要在form窗体中才能找到。)
2.dll引用
这个时候需要引用dll。主要是2个dll
AxInterop.MSTSCLib.dll
Interop.MSTSCLib.dll
网上下载下来这两个dll,引用正常,但是启动程序会报 未能加载程序集什么什么的。 这个是因为dll没有考到debug目录下。需要手动拷贝过去。
不过这里我建议用我的方式。
(新建一个Form窗体。手动拖入新加的com组件。dll就自动引用过去了)

wpf调用远程桌面
然后不用这个form页面就可以删除它。

3.测试连接在这里插入代码片

在主界面下添加

        private AxMsRdpClient8NotSafeForScripting RDP { get; set; }


        public ServerConfigInfo FSWConfigData { get; set; }
        public FSWWindow(ServerConfigInfo data)
        {
            InitializeComponent();
            FSWConfigData = data;
            RDP = new AxMsRdpClient8NotSafeForScripting();
            RDP.BeginInit();
            host1.Child = RDP;
            this.SizeChanged += FSWWindow_SizeChanged;
            this.Loaded += FSWWindow_Loaded;
            this.Closing += FSWWindow_Closing;
        }

        private void FSWWindow_Loaded(object sender, RoutedEventArgs e)
        {
            if (RDP.Connected != 0)
            {
                return;
            }
            Connect();
        }
        public void Connect()
        {
            if (RDP.Connected != 0)
            {
                return;
            }
            RDP.Dock = System.Windows.Forms.DockStyle.None;
            RDP.Server = FSWConfigData.FSWServerIP;
            RDP.UserName = FSWConfigData.FSWUserName;
            RDP.AdvancedSettings8.ClearTextPassword = FSWConfigData.FSWPassWord;

            //RDP.AdvancedSettings8.AuthenticationLevel = 2;
            RDP.AdvancedSettings8.EnableCredSspSupport = true;
            //RDP.AdvancedSettings8.NegotiateSecurityLayer = false;
            RDP.FullScreen = true;
            //RDP.AdvancedSettings8.RelativeMouseMode = true;
            //RDP.AdvancedSettings.BitmapPeristence = 1;
            //RDP.AdvancedSettings.Compress = 1;
            //RDP.AdvancedSettings8.SmartSizing = true;
            //RDP.ColorDepth = 15;

            //RDP.AdvancedSettings8.RedirectDrives = false;
            //RDP.AdvancedSettings8.RedirectPrinters = false;
            //RDP.AdvancedSettings8.RedirectClipboard = true;
            //RDP.AdvancedSettings8.RedirectSmartCards = false;
            RDP.OnConnecting += Rdp_OnConnecting;
            RDP.OnDisconnected += Rdp_OnDisconnected;
            RDP.OnFatalError += Rdp_OnFatalError;
            RDP.OnLogonError += Rdp_OnLogonError;
            RDP.Connect();
        }

坑点2,需要注意的是,连接成功后,如果改变父级窗体最大化 最小化,远程链接的桌面大小无法改变,这是因为DesktopWidth和DesktopHeight 无法改变导致,如果父窗体最大化 最小化需要实现远程链接的断开,然后重连文章来源地址https://www.toymoban.com/news/detail-441668.html

        private void reDraw(AxMSTSCLib.AxMsRdpClient8NotSafeForScripting rdp,int width,int height)//重新調整rdp桌面大小,需要重新連線才能實現
        {
            if (rdp.Connected == 1)//
            {
                rdp.Disconnect();
                while (rdp.Connected != 0)//如果尚未斷開連線則等待,直至完全斷開
                {
                    Thread.Sleep(100);
                    DoEvents();
                }


            }
            rdp.Width = width - 50;
            rdp.Height = height - 50;
            rdp.DesktopWidth = width;
            rdp.DesktopHeight = height;
            if (rdp.Server != "")
                rdp.Connect();
        }

到了这里,关于wpf调用远程桌面的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RustDesk 搭建一个自己的远程桌面中继服务器

            现在很多商业远程软件要么收费,要么有或多或少的问题。因此急需一个可以自定义且方便快捷的远程桌面软件代替他们,rustdesk就是这样一个开源项目         github地址:https://github.com/rustdesk/rustdesk                 可以自行下载编译,或者按照自己的需求修改。

    2024年02月07日
    浏览(46)
  • 如何通过python写接口自动化脚本对一个需要调用第三方支付的报名流程进行测试?

    对于需要调用第三方支付的报名流程进行接口自动化测试,可以通过以下步骤来编写Python代码: 1. 确认API需求 首先,需要确认报名流程的API需求和预期功能。这涉及到对业务需求的理解和API设计的分析。 2. 安装依赖库 在Python程序中,需要安装requests库(用于发送HTTP请求)和

    2024年02月10日
    浏览(71)
  • 不同微服务之间如何实现远程调用?一个简单示例告诉你

    目录 1、服务拆分原则  2、服务拆分示例 2.1、初始化数据库 2.2、导入demo工程 2.3、测试 3、实现远程调用 3.1、需求 3.2、注册RestTemplate 3.3、实现远程调用 4、提供者与消费者 5、代码免费分享 🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学习

    2024年04月27日
    浏览(40)
  • 开发一个ChatGPT都需要什么?

    开发像 ChatGPT 这样的聊天机器人一般需要以下组件: 1. 大型语言模型:像 ChatGPT 这样的聊天机器人的骨干是一个大型语言模型,这个模型已经在大量文本数据上进行了训练。该模型应该能够生成类似人类真实语言的文本并根据上下文回答问题。 语言模型的目的是预测一个给

    2024年01月17日
    浏览(44)
  • WPF开发一个可以自适应排列的Panel控件

    一.控件介绍     初看标题可能无法理解,我们看看什么是自适应排列。 乍一看它有点像WrapPanel控件,都是从左至右排列,如果一行排列不下就换行继续排列,但是细看你就会发现不对,WrapPanel控件行尾是不会对齐的,也就是说只要WrapPanel的子控件的宽度不一致,每一行的

    2024年04月08日
    浏览(51)
  • 开发一个小程序商城需要多少钱?

    开发一个小程序商城需要多少钱?小程序商城的制作流程是什么?今天 CRMEB 就和大家来聊一聊开发小程序商城的方法以及费用,感兴趣的朋友赶紧来看一看! 方法一:源码开发(4 万左右) 开发小程序商城,首先我们要组织聘请完整专业的开发团队。其中要包含项目经理、

    2024年02月09日
    浏览(46)
  • 一个WPF开发的、界面简洁漂亮的音频播放器

    今天推荐一个界面简洁、美观的、支持国际化开源音频播放器。 这是一个基于C# + WPF开发的,界面外观简洁大方,操作体验良好的音频播放器。 支持各种音频格式,包括:MP4、WMA、OGG、FLAC、M4A、AAC、WAV、APE 和 OPUS;支持标记、实时显示歌词等功能;支持换肤、中英文等主流

    2024年02月01日
    浏览(54)
  • nft平台开发——开发一个nft平台需要多钱

    NFT现阶段的运用范畴大量或是限于数字藏品和数据工艺品中,中国销售市场大量称之为数字藏品销售市场,减弱买卖特性,突出土地确权个人收藏作用,发展前景与国外NFT销售市场各有不同,互联网技术头顶部生产商、国有制新闻媒体进军数字藏品销售市场。2022年开始,国内

    2024年02月13日
    浏览(49)
  • 开发一个饲料商城小程序需要多少钱

    随着宠物行业的蓬勃发展,饲料商城小程序作为一个重要的销售渠道,吸引了越来越多的投资者。那么,开发一套饲料商城小程序需要多少钱呢?本文将为您详细解答。 首先,开发一套饲料商城小程序的价格受到多个因素的影响,包括功能需求、设计风格、开发团队、服务器

    2024年02月14日
    浏览(44)
  • 学会Python开发的第一步:写一个桌面小程序

    嗨喽,大家好呀~这里是爱看美女的茜茜呐 又到了学Python时刻~ 当使用桌面应用程序的时候,有没有那么一瞬间, 想学习一下桌面应用程序开发? 建议此次课程大家稍作了解不要浪费太多时间, 因为没有哪家公司会招聘以为Python程序员开发桌面程序吧? Python 3.6 Python是一种代

    2024年02月03日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包