我最近在网上搜索,试图找到有关如何在 WPF 中创建和运行 MSTSC RDP 会话的答案,最后得到了我需要的所有东西,创建了 AxMSTSCLib dll 并将其添加和 MSTSCLib dll 作为项目的参考。但在创建用户控件并添加 Windows 窗体主机后,运行应用程序不会显示 MSTSC Active X 控件。
如果我将 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);
}
}
但应用程序上实际上并没有出现任何内容。我已经用谷歌搜索并尝试更改代码中的位和鲍勃,但会引发一些错误,但 10 次中有 9 次控制不显示 MSTSC 会话。
更新 1: 我尝试移动 rdp.CreateControl() 行,以防控件被创建到早期,现在我收到错误:“'System.Windows.Forms.AxHost.InvalidActiveXStateException'发生在 AxMSTSCLib.dll”