现在的位置: 首页 > 综合 > 正文

远程终端开发mstscax.dll的调用方法

2013年10月20日 ⁄ 综合 ⁄ 共 4339字 ⁄ 字号 评论关闭

#调用mstscax.dll编写远程桌面 RDP client 

2012-08-08 09:46:56|  分类: C#.NET |字号 订阅
步骤一:添加COM引用mstscax.dll,该文件位于c:\windows\system32目录下

步骤二:添加控件到选项卡上。

在窗体设计的工具箱上点击右键,在弹出的菜单中单击“选择项”

在COM选项卡下选择位于c:\windows\system32下的mstscax.dll文件,标题为Microsoft RDP client control

在设计模式下的工具箱中找到Microsoft RDP Client Control控件,并拖入到窗体上,命名为rdp。

连接代码如下

        private void btn_K8conn3389_Click(object sender, EventArgs e)
        {

            rdp.Server = "192.168.1.111";

            rdp.AdvancedSettings2.RDPPort = 3389;

            rdp.UserName = "k8admin";
            rdp.AdvancedSettings2.ClearTextPassword = "k8team";

            //在rdp.AdvancedSettings2下还有很多高级设置,自行摸索吧,
            rdp.Connect();

        }

 

 
以下是另一编VB调用的例子
 
WINDOWS遠程登錄組件mstscax.dll的使用 

    專案中要求能有遠程控制功能,這兩天一直在找資料,想到兩個思路: 
    一是自己寫,思想基本上就是,在被控PC端抓圖,傳到控制程式,然後將控制程式中的指令傳到被控端,如果這樣涉及的知識比較多,有網路傳輸、WIN32API(查下來發現,滑鼠鍵盤的操作,win32API是比較可行的)、WINFORM中的一系列的東西,估計用時會很長,但能學到不少東西;     二就是利用現有的東西,特別是WINDOWS裏的終端功能的介面,基於Remote Desktop Protocol的東西,轉來轉去,發現最方便的是 ActiveX component mstscax.dll的使用,這個直接就可以在winform中生成一個對象。 
    考慮到工作量和時間,選第二個思路比較方便。 
    在網上找了很多資料,發現國內用這個的不多,可能是不值得一提吧。     最後終於找到了。現在就講講方法: 
     這裏主要用到的就是Activex component mstscax.dll,網上看到好多說在visual studio.net 2003中的工具箱中可以直接將它添加,我試了Win2k advance server和xp下都不能成功,報“不是com伺服器”,好像這條路行不通,幸好找到一個一個方法,繞過了這個,用的是Windows Forms ActiveX 
Control Importer (Aximp.exe),具體操作就把找到的帖子粘帖出來。具體的使用,還在摸索。 
 
1. md c:\temp  2. cd c:\temp  
3. %<SDK bin directory>%\aximp.exe %windir%\system32\mstscax.dll  This will generate MSTSCLib.dll and AxMSTSCLib.dll.  
Make sure Interop.MSTSCLib.dll and AxInterop.MSTSCLib.dll have been deleted  in the obj and bin\Debug directories.  
4. Copy the generated files (without renaming) - MSTSCLib.dll and  AxMSTSCLib.dll into the project's obj directory.  
5. In the project's references, add MSTSCLib.dll and AxMSTSCLib.dll from  the obj directories.  
6. Now, instead of drag-drop'ing the control from the toolbox, write code  to add the control:   
Goto Form.cs code view   
Declare: private AxMSTSCLib.AxMsTscAx axMsTscAx1;  In InitializeComponent:  
this.axMsTscAx1 = new AxMSTSCLib.AxMsTscAx();  
((System.ComponentModel.ISuppo rtInitialize)(this.axMsTscAx1) ).BeginInit();   
this.axMsTscAx1.Enabled = true;  
this.axMsTscAx1.Location = new System.Drawing.Point(58, 17);  this.axMsTscAx1.Name = "axMsTscAx1"  this.axMsTscAx1.OcxState =  ((System.Windows.Forms.AxHost. State)(resources.GetObject("ax MsTscAx1.OcxState")));  
this.axMsTscAx1.Size = new System.Drawing.Size(192, 192);  
this.axMsTscAx1.TabIndex = 1;  
this.Controls.Add(this.axMsTsc Ax1);  
((System.ComponentModel.ISuppo rtInitialize)(this.axMsTscAx1) ).EndInit();   
=========================================================== 
1. 首先確保你的機器上存在mstscax.dll,假如沒有這個檔,可以從http://download.microsoft.com/download/whistler/tools/1.0/wXP/en-us/msrdpcli.exe 
下載並安裝遠程桌面連接軟體.或者使用WindowXP中自帶的mstscax.dll,運行regsvr32 mstscax.dll進行註冊,ccrun測試使用的mstscax.dll版本號是5.1.2600.0,在Windows2000 Server中可以編譯。     
2. 運行C++Builder-->Components-->Import Active Control,在列表中找到下麵的: 
 Microsoft Terminal Services Active Client 1.0 Type Library (Version 1.0) 點擊Install,你可以選擇將其安裝到現在的包中,也可以新建一個,選擇Into new package-->點擊Browser將其保存為D:Program FilesBorlandccrunmstscmstsc.bpk。在Description一欄可以填:Microsoft Terminal Service Control,這個名稱將出現在安裝完成後的Package列表中。點擊OK以後,稍等片刻,系統會提示mstsc.bpl將被編譯並且安裝,是否繼續,點擊yes。這時假如一切正常的話,系統將提示有兩個編譯錯誤(嘿嘿,我指的是正常情況下),難道是BCB的BUG?提示找不到OlePrecedure的定義。我靠。記憶中有個OleProcedure,一個o,一個e,該不會真的是筆誤吧。將兩處OlePrecedure換成OleProcedure,再次編譯,ok了,編譯成功,點擊Install安裝。
    
3. 假如上一個步驟成功的話,在組件面板的ActiveX下將多出兩個控件:MsTscAx和MsRdpClient,我們主要是利用MsTscAx控件。     
4. MsTscAx控件的常用屬性和方法:  
// 桌面高度 
MsTscAx1->DesktopHeight = 600; // 桌面寬度 
MsTscAx1->DesktopWidth = 800; // 在連接前顯示的字串 
MsTscAx1->ConnectingText = WideString("Welcome! ccrun."); // 連接的伺服器地址 
MsTscAx1->Server = WideString(edtServer->Text); // 窗口/全屏模式 
MsTscAx1->FullScreen = false;   
// 文檔標題:打造自己的Windows終端服務客戶端 // 作者:ccrun(老妖) 信箱:info@ccrun.com 
// 為防止不負責任的轉載者遺漏作者資訊,故在此插入此信息,請見諒. // 歡迎訪問C++Builder 研究 http://www.ccrun.com     
// 畫面色深(通常都是256色) 

 MsTscAx1->ColorDepth = 16;  // 登錄用戶名 
 MsTscAx1->UserName = WideString(edtUserName->Text);  // 斷開連接後顯示的字串 
 MsTscAx1->DisconnectedText = WideString("886,ccrun.");  // 將位圖緩存到磁片 
 MsTscAx1->AdvancedSettings->BitmapPeristence = 1;  // 啟用數據壓縮 
 MsTscAx1->AdvancedSettings->Compress = 1; 
 // 連接後運行的Shell程式,當關閉此Shell程式後自動斷開連接 
 MsTscAx1->SecuredSettings->set_StartProgram(WideString("C:ccrun123.exe"));  // 連接 
MsTscAx1->Connect();  // 斷開連接 
 MsTscAx1->Disconnect();     
5. 新建一個Project,在Form上拖一個MsTscAx控件,根據上面介紹的屬性和方法,相信你在BCB中建立自己的終端服務客戶端沒問題了。   
 6. 編譯後的程式發佈時必須在目標機器上存在mstscax.dll檔,並且用Regsvr32註冊以後才能正常運行。    
 有BUG,意見和建議,歡迎致信到info@ccrun.com共同討論,請勿攜帶附件,帶附件信件一律自動刪除,謝謝

抱歉!评论已关闭.