【问题标题】:Delphi ActiveX MSTSCLibDelphi ActiveX MSTSCLib
【发布时间】:2015-11-05 20:44:35
【问题描述】:

我正在尝试使用一些用于 MS-RDP (mstscax.dll) 的 Delphi ActiveX 库,因此我将库导入到我的项目中,并开始在网络上寻找一些代码 sn-ps。乍一看,这很明显,但缺乏示例使它有点复杂。

首先库在 Delphi Seattle 上给出了一个错误,在这一行:

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 连接,什么也没发生,并且出现“错误”消息。知道如何与这个人合作吗?

【问题讨论】:

  • 只需将 TMsRDPClient9 组件拖放到表单上并设置其属性(设计时或运行时)。调用 connect 并连接到服务器。在西雅图测试并完美运行......

标签: delphi


【解决方案1】:

这个问题让我很感兴趣,所以我尝试导入那个 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。

这是我在我写的小应用程序上看到的内容:

【讨论】:

  • 得出了同样的结论,是否有任何原因导致 ConnectWithEndpoint 属性上的 POleVariant1 变量错误?这是 TLB 文件中的错误还是 Delphi 方面的误解?
  • 不知道... 还没看TLB导入的代码。我见过很多 TLB 信息模棱两可的情况,可能会吓跑许多 TLB 导入器。奇怪的是,这是一个只写属性,所以这可能与此有关。
  • 嗨,正如我在问题上所说,我正在“玩”这个,专门了解如何使用/安装 ActiveX 组件。各位大大有安装教程吗?我只是转到组件 > 导入组件 > ActiveX 控件 > 选择控件 > 创建单元或将单元添加到项目中......这并没有给我任何要添加到我的 VCL 表单上的 TMsRdpClient9 组件......
  • 您好 user3810691,您必须将控件导入新包并安装,就像艾伦说的那样...
  • 在导入组件向导的最后一页,选择安装到现有包或安装到新包。我使用了 New Package 并将其命名为 MsRdp。由于 ConnectWithEndpoint 属性的错误,它将无法在下一步中编译。修复该问题,然后右键单击包项目并选择安装。这应该将包构建和安装为设计/运行时包。您可能需要更新搜索路径以指向导入的单元...我正在运行产品的内部开发人员构建,所以我不确定您是否需要这样做。
猜你喜欢
  • 2013-02-08
  • 1970-01-01
  • 1970-01-01
  • 2011-01-18
  • 1970-01-01
  • 2021-05-07
  • 2011-01-31
  • 2015-01-19
  • 2014-06-01
相关资源
最近更新 更多