问题描述
我正在尝试在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
我尝试过
_rdp.Dock = System.Windows.Forms.DockStyle.Fill;
但是它会使应用程序消失。任何人都知道这是怎么回事?任何可行的示例都会有所帮助。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)