我最近在网上试图找到如何在WPF中创建和运行MSTSC RDP会话的答案,最后得到了我需要的所有东西,创建了AxMSTSCLib dll并添加了它和MSTSCLib dll作为项目的参考。但在创建用户控件并添加Windows窗体主机后,运行该应用程序不会显示MSTSC Active X Control。
如果我将RDP控件交换为类似TextBlock的东西,它会显示,所以我知道它不能与用户控件本身有关。加载用户控件时发生的事件触发并执行以下操作;
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
try
{
AxMsRdpClient9NotSafeForScripting rdp = new AxMsRdpClient9NotSafeForScripting();
//AxMsTscAxNotSafeForScripting rdp = new AxMsTscAxNotSafeForScripting();
//AxMsRdpClient9 rdp = new AxMsRdpClient9();
rdp.CreateControl();
rdp.AdvancedSettings9.AuthenticationLevel = 2;
rdp.AdvancedSettings9.EnableCredSspSupport = true;
rdp.AdvancedSettings9.NegotiateSecurityLayer = false;
rdp.Server = server;
rdp.UserName = "jwilson-hogg";
rdp.DesktopHeight = 768;
rdp.DesktopWidth = 1024;
rdp.Connect();
RDP_Host.Child = rdp as System.Windows.Forms.Control;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message + "\n\n" + ex.InnerException, "Error Trying to connect to: " + server);
}
}
但实际上没有出现在应用程序上。 我用Google搜索并尝试在代码中更改位和bobs,但是有一些错误被抛出,但是10次控制中的9次没有显示MSTSC会话。
更新1: 我已经尝试移动rdp.CreateControl()行,因为控件正在创建到早期,现在我收到错误:“'System.Windows.Forms.AxHost.InvalidActiveXStateException'发生在AxMSTSCLib.dll”