Dockfill在MSTSC ActiveX控件中不起作用

问题描述

我正在尝试在WPF中创建rdp。我使用AxMSTSCLib库在wpf应用程序中创建了rdp客户端。我计划创建一个托管rdp的用户控件,并通过以下代码实现了它。 但是我可以看到Windows主机的灰色区域。我需要为rdp客户端填充Windows主机的大小。

 public partial class RDPUserControl : UserControl
    {
        internal RDPActiveXControl _rdp;
        internal string Servername { get; set; }
        internal string Username { get; set; }
        internal string Password { get; set; }
        internal TabItem TabItem { get; set; }
        public RDPUserControl()
        {
            InitializeComponent();
        }
 
        private void InitData()
        {
            _rdp = new RDPActiveXControl();
            ((System.ComponentModel.ISupportInitialize)(_rdp)).BeginInit();
            _rdp.Name = "rdp";
            _rdp.Enabled = true;
            wfHost.Child = _rdp;
            ((System.ComponentModel.ISupportInitialize)(_rdp)).EndInit();
        }

        internal void Connect()
        {
            _rdp.Server = Servername;
            _rdp.UserName = Username;
            _rdp.AdvancedSettings7.ClearTextPassword = Password;
            _rdp.ColorDepth = 24;
            _rdp.AdvancedSettings7.SmartSizing = true;
            _rdp.AdvancedSettings7.AuthenticationLevel = 2;
            _rdp.AdvancedSettings7.EnableCredSspSupport = true;
            _rdp.Width = Convert.ToInt32(this.ActualWidth);
            _rdp.Height = Convert.ToInt32(this.ActualHeight);
            _rdp.DesktopWidth = Convert.ToInt32(this.ActualWidth);
            _rdp.DesktopHeight = Convert.ToInt32(this.ActualHeight);
            _rdp.OnDisconnected += _rdp_OnDisconnected;
            try
            {
                _rdp.Connect();
            }
            catch(Exception e)
            {
                MessageBox.Show("Connection Failed: "+e.Message);
            }
        }

        private void _rdp_OnDisconnected(object sender,AxMSTSCLib.IMsTscAxEvents_OnDisconnectedEvent e)
        {
            MainWindow window = Application.Current.MainWindow as MainWindow;
            Page page = window._mainFrame.Content as Page;
            ConnectionsPage connectionPage = page as ConnectionsPage;
            connectionPage.CloseTab(TabItem);
        }

        private void Button_Click(object sender,RoutedEventArgs e)
        {
            InitData();
            Connect();
        }
    public class RDPActiveXControl : AxMSTSCLib.AxMsRdpClient6NotSafeForScripting
    {
        public RDPActiveXControl() : base() { }

        protected override void WndProc(ref System.Windows.Forms.Message m)
        {
            // Fix for the missing focus issue on the rdp client component
            if (m.Msg == 0x0021) // WM_MOUSEACTIVATE
            {
                if (!this.ContainsFocus)
                {
                    this.Focus();
                }
            }

            base.WndProc(ref m);
        }

    }

如何使RDP ActiveXControl完全适合windowsFormHost

enter image description here

我尝试过

_rdp.Dock = System.Windows.Forms.DockStyle.Fill;

但是它会使应用程序消失。任何人都知道这是怎么回事?任何可行的示例都会有所帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...