我正在尝试从Powerbuilder中访问第三方COM服务器。我可以实例化对象,但每当我尝试在对象上调用方法或属性时,我得到错误36:“找不到访问外部对象的名称”。
OLEObject PNSession
PNSession = CREATE OLEObject
ll_status = PNSession.ConnectToNewObject("PNSrv9.PNSession")
if ll_status = 0 then
// Set the session printer
try
PNSession.SetSessionPrinter('TIFF Image Printer 9.0', 1, g_pfapp.null_string, False)
catch (oleruntimeerror lole_error2)
messagebox('Set Error', lole_error2.description)
end try
// Turn job tracking on
PNSession.TrackingOn = True
end if
ConnectToNewObject调用成功,我在任务管理器中看到了COM服务器,但后续调用失败。基于我查看的Word,Excel的所有COM自动化代码示例,上述内容看起来是正确的。
COM服务器是C ++ ATL COM服务器,如果有任何不同,则不是.NET COM对象。
有没有人知道为什么这不起作用或我缺少什么?
感谢。
答案 0 :(得分:0)
您可能没有正确的参数类型。查看SetSessionPrinter,我会尝试将0
传递给PortsPreCreated
。对于PortBaseName
,请尝试将字符串初始化为""
并尝试0
。
同样,请尝试PNSession.TrackingOn = 0
。