2014-12-29 38 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