使用PowerBuilder中的COM对象 - 错误36:找不到访问外部对象的名称

时间:2011-09-01 13:42:57

标签: com automation ole powerbuilder

我正在尝试从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对象。

有没有人知道为什么这不起作用或我缺少什么?

感谢。

1 个答案:

答案 0 :(得分:0)

您可能没有正确的参数类型。查看SetSessionPrinter,我会尝试将0传递给PortsPreCreated。对于PortBaseName,请尝试将字符串初始化为""并尝试0

同样,请尝试PNSession.TrackingOn = 0