2015-11-05 86 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