2014-12-29 37 views
3

我工作的应用程序将优化我的工作,通过RDP连接到我的服务器。在这一点上,我想要做一个窗口窗体,向我展示我的所有服务器。凭借我的适当知识 - 我想在我的Windows窗体中以编程方式添加AxMsRdpClient2AxMsTscAxNotSafeForScripting控件。在开始时,我有一个Form1,用于保存我的凭证(IP,USER,PASS),并使用简单的FOR来添加ActiveX客户端到我的Form2并连接到服务器。RDP客户端 - AxHost.InvalidActiveXStateException

在这里,我有问题。让我们看看我的代码如下。从Form1中

呼叫()>

var btt = new RunRDP(); 
    for (int i = 0; i < 15; i++) 
    { 
     btt.PozitionMaster(); 
    } 

RunRDP类别:

private static int _count; 
private static int _row = 4; 
private static int _colum = 4; 
private static int _objId; 

public void PozitionMaster() 
    { 
     if (_count != 6) 
     { 
      UInitializer(_objId++, _row, _colum); 
      _row += 196; 
      _count++; 

     } 
     else 
     { 
      _colum += 196; 
      _row = 4; 
      _count = 0; 
     } 
    } 

UInitializer功能:

public AxMsRdpClient2 rdpClient; 

     public void UInitializer(int id, int x, int y) 
     { 
      Form2 ippo = new Form2(); 
      rdpClient = new AxMsRdpClient2(); 

      rdpClient.UserName = "username"; 
      rdpClient.Server = "192.168.0.100"; 
      rdpClient.Height = y; 
      rdpClient.Width = x; 

      rdpClient.BeginInit(); 
      rdpClient.CreateControl(); 


      if (ippo.InvokeRequired) 
      { 
       ippo.Invoke(new Action(() => ippo.Controls.Add(rdpClient))); 
       ippo.Invoke(new Action(() => ippo.Update())); 
      } 
      else 
      { 
       ippo.Controls.Add(rdpClient); 
      } 

      //this.Controls.Add(rdpClient); 

      rdpClient.AdvancedSettings2.RDPPort = 3389; 
      rdpClient.AdvancedSettings2.ClearTextPassword = "hello_rdp";//  
      rdpClient.ColorDepth = 16;//  
      rdpClient.FullScreen = false;//  

      rdpClient.Connect();  
     } 

得到这个错误:

An unhandled exception of type 'System.Windows.Forms.AxHost. 
InvalidActiveXStateException' occurred in AxInterop.MSTSCLib.dll 

{"Exception of type 'System.Windows.Forms.AxHost+InvalidActiveXStateException' was thrown."} 

回答

4

当您在之前开始使用ActiveX控件时会引发InvalidActiveXStateException,其本机窗口已创建。直到您调用ippo.Show();之后才发生这种情况。在该语句后移动关键属性分配和方法调用。

+0

谢谢!这是我的解决方案! – KiNG