Использование COM-объекта из PowerBuilder - ошибка 36: имя не найдено при доступе к внешнему объекту - PullRequest
1 голос
/ 01 сентября 2011

Я пытаюсь получить доступ к стороннему COM-серверу из Powerbuilder. Я могу создать экземпляр объекта, но всякий раз, когда я пытаюсь вызвать метод или свойство объекта, я получаю ошибку 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-сервер в диспетчере задач, но последующие вызовы не выполняются. Вышеприведенное выглядит корректно на основе всех примеров кода автоматизации COM для Word, Excel, на которые я смотрел.

COM-сервер является COM-сервером C ++ ATL, а не COM-объектом .NET, если это имеет какое-либо значение.

У кого-нибудь есть идеи, почему это не работает или чего мне не хватает?

Спасибо.

1 Ответ

0 голосов
/ 02 сентября 2011

Возможно, вы не правильно указали типы параметров. Глядя на SetSessionPrinter , я бы попробовал передать 0 для PortsPreCreated. Для PortBaseName попробуйте строку, инициализированную в "", а также попробуйте 0.

Аналогичным образом попробуйте PNSession.TrackingOn = 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...