2015-11-05 41 views
0

我想玩一些用於MS-RDP(mstscax.dll)的Delphi ActiveX庫,所以我將庫導入到了我的項目中,並開始在網上尋找一些代碼片段。首先看,這很明顯,但缺乏示例使其有點複雜。Delphi ActiveX MSTSCLib

一庫給出了德爾福西雅圖一個錯誤,在這條線:

property ConnectWithEndpoint: POleVariant1 write Set_ConnectWithEndpoint; 

好吧,我評論該線路輸出(不是最好的解決辦法,我知道),但它編譯。後來我試着只將POleVariant1改爲OleVariant,並且仍在編譯。 好,編譯後,我想這樣的代碼:

var 
    Form1: TForm1; 
    RDP: TMsRdpClient8NotSafeForScripting; 

implementation 

{$R *.dfm} 

procedure TForm1.Button1Click(Sender: TObject); 
begin 
    RDP:= TMsRdpClient8NotSafeForScripting.Create(Nil); 
    RDP.Server:= 'xxxx'; 
    RDP.AdvancedSettings8.RDPPort:= 3389; 
    RDP.UserName:= 'terminal'; 
    RDP.AdvancedSettings8.ClearTextPassword:= '123456'; 
    RDP.Connect; 
    if RDP.Connected.ToBoolean = true then 
    ShowMessage('connected') 
    else 
    ShowMessage('error'); 

end; 

我嘗試了一些不同類型的VAR RDP,就像TMsRdpClient8只,但仍是同樣的問題: 它甚至不嘗試連接!在查看嗅探器時,沒有tcp連接,只是沒有任何反應,並出現「錯誤」消息。有關如何與這個人合作的想法?

+0

剛落表單上的TMsRDPClient9組件,並設置其屬性(設計時或運行時)。呼叫連接並連接到服務器。在這裏測試seatlle和完美的作品... – whosrdaddy

回答

2

這個問題引起了我的興趣,所以我試圖導入該ActiveX控件並自己嘗試。它似乎爲我工作,所以我會解釋我做了什麼。

我導入了mstscax.dll ActiveX控件,然後將它添加到一個新的包中,以便將組件安裝到工具面板上。我立即遇到了您對ConnectWithEndpoint屬性所做的錯誤。我將聲明中的類型更改爲OleVariant,因爲Set_ConnectWithEnpoint屬性設置函數使用OleVariant。顯然有一些關於我們的ActiveX導入代碼被混淆的類型信息。無論採用哪種方式,該更改都使文件能夠編譯並安裝組件包。現在有一堆TMsRdpClientXXXX組件。

創建一個新的VCL Forms項目,然後將TMsRdpClient9組件拖放到窗體中。新增一個TButton,然後將此代碼添加到按鈕的onclick處理程序:

MsRdpClient91.Server := '<some remote server>'; 
    MsRdpClient91.Domain := 'embarcadero.com'; 
    MsRdpClient91.UserName := 'abauer'; 
    MsRdpClient91.Connect; 

一旦我跑的應用程序,並按下按鈕,它連接和ActiveX控件的內容顯示在遠程服務器登錄屏幕就好了。

我運行Windows 10,建立10565.

這裏就是我看到我的小程序,我寫道: enter image description here

+0

來到相同的結論,任何錯誤的ConnectWithEndpoint屬性POleVariant1變量的原因?這是TLB文件中的錯誤還是德爾福方面的錯誤解釋? – whosrdaddy

+0

不知道...還沒有看過TLB導入的代碼呢。我見過很多TLB信息不明確的實例,並且可能會導致很多TLB導入器。這是一個只寫屬性,這很奇怪,所以這可能會有一些影響。 –

+0

嗨,正如我在這個問題上所說的,我正在「玩」這個,特別是要了解如何使用/安裝ActiveX組件。你們有關於如何安裝的教程嗎?我只是去組件>導入組件> ActiveX控件>選擇控制>創建單元或添加單元到項目...這不會給我任何TMsRdpClient9組件添加到我的VCL形式... – user3810691