我已经使用Delphi一段时间了,但我正在尝试一些COM编程并遇到麻烦。我很抱歉,如果这是一个NewBie问题,但在搜索了很多我无法获得的东西或设置RDPEncom RDPSession对象的属性之后。代码(包括几个天真的尝试)如下。如果我删除试图读取属性的行,剩下的代码工作正常。
如何获取和设置RDPSession.Properties的PortID属性?
uses rdpencomapi_TLB; // from JWAPI
...
myRDPSession := CoRDPSession.Create();
if VarIsNull(myRDPSession) then
begin
application.MessageBox('MsRdpSession creation failed.', 'Error');
Result := False;
Exit;
end;
try
didShare := myRDPSession.Open;
except
ShowMessage('Unable to share desktop !');
Exit;
end;
theProperty := 'PortID';
ActiveXProp := myRDPSession.Properties;
//lValues := ActiveXProp.Property_(theProperty); // method not supported
//lValues := ActiveXProp.Property(theProperty); // member not found
myRDPSession.Properties.GetProperty(lValues, myRDPSession.Properties.Property, theProperty);
{
ALL RETURN INVALID NUMBER OF PARAMETERS..
ActiveXProp.GetProperty(lValues, ActiveXProp.Property, 'PortID');
ActiveXProp.Property.GetProperty(ActiveXProp.Property, lValues, 'PortID');
ActiveXProp.Property.GetProperty(lValues, ActiveXProp, 'PortID');
ActiveXProp.Property.Get_Prop_('PortID', ActiveXProp);
ActiveXProp.Property.SetProperty('PortID', ActiveXProp);
ActiveXProp.Property.Set_Prop_('PortID', ActiveXProp);
}
ActiveXInvite := myRDPSession.Invitations.CreateInvitation('RemoteSupport', 'WePresent', '12345', 75);
...
答案 0 :(得分:3)
肯
您的评论让我有所了解......我从我自己的机器重新生成了TLB文件,发现它确实有一个属性不在我最初使用的TLB中(来自Jedi Project)。这个有一个名为' Property'这让我可以做我需要的事情。基本上我错过了COM接口点。我用这种方式更新TLB后就开始工作了(还没有错误检查):
// get properties interface
myRDPSessionProp := myRDPSession.Properties;
// set listening port
myRDPSessionProp.Property['PortID'] := 59000;
// set color depth
myRDPSession.colorDepth := 8;
didShare := myRDPSession.Open;