COM объект не виден из С6
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
COM объект не виден из С6
Уважаемые коллеги,
Порекомендовали мне тут набор Com объектов (платный) для обработки почты (пока интересует SMTP отправка с поддержкой SSL ).
Сходил на сайт http://www.quiksoft.com/ взял это дело (благо есть период trial). Отсетапил, нашел кучку dll почитав доку зарегистрировал через regsvr32. И пошел в C6.3 И вызвал функцию OLEDirectory и .... не обнаружил данных объектов в списках (прыгал вокруг нее согласно доки но этого объекта нет зато куча остальных). В реестре такой объект появился у него есть GUID и все что полагается. Libmaker видит четыре стандартные для com объектов функции регистрации и удаления. Хочу спросить или я чего-то недопонял или не все com объекты доступны в clarion через OLE/OCX (что очень странно если их создают для использования здесь).
PS. Конечно есть еще catalyst, но там надо возиться писаниной, а здесь десять строк кода и письмо ушло.
Порекомендовали мне тут набор Com объектов (платный) для обработки почты (пока интересует SMTP отправка с поддержкой SSL ).
Сходил на сайт http://www.quiksoft.com/ взял это дело (благо есть период trial). Отсетапил, нашел кучку dll почитав доку зарегистрировал через regsvr32. И пошел в C6.3 И вызвал функцию OLEDirectory и .... не обнаружил данных объектов в списках (прыгал вокруг нее согласно доки но этого объекта нет зато куча остальных). В реестре такой объект появился у него есть GUID и все что полагается. Libmaker видит четыре стандартные для com объектов функции регистрации и удаления. Хочу спросить или я чего-то недопонял или не все com объекты доступны в clarion через OLE/OCX (что очень странно если их создают для использования здесь).
PS. Конечно есть еще catalyst, но там надо возиться писаниной, а здесь десять строк кода и письмо ушло.
- WadimZapara
- Активист
- Сообщения: 181
- Зарегистрирован: 11 Июнь 2008, 12:11
- Откуда: Тамбов
Re: COM объект не виден из С6
Вообще-то, COM <> OLE и COM <> OCX
Поэтому в OLEDirectory его и нету. Но заюзать можно (наверное). А проверять наличие - 1-ый пришедший на ум вариант - через реестр.
Поэтому в OLEDirectory его и нету. Но заюзать можно (наверное). А проверять наличие - 1-ый пришедший на ум вариант - через реестр.
Компьютер имеет то преимущество перед мозгом, что им пользуются...
- Дед Пахом
- Старичок
- Сообщения: 3289
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 49 раз
- Контактная информация:
Re: COM объект не виден из С6
В оконной процедуре где угодно, но после открытия окна:
Код: Выделить всё
OleCtrl = CREATE(0,CREATE:OLE)
OleCtrl{prop:create} = ProgId
! или если есть лицензионный ключ
! OleCtrl{prop:create} = CLIP(ProgId) & '\!' & CLIP(LicenseKey)
С уважением, ДП
Re: COM объект не виден из С6
В том -то и дело что так не идет. Если объект виден из OleDirectory то работает (объект заданный по ProgID создается). А так вытаскиваем ProgID из реестра вручную далее его пишем в ProgID и объекта нет. По доке написано что ключ не нужен в течении 20 дней (период триал). Строки кода даже в фокспро элементарны (sample есть), получается что мы не можем использовать все подряд com объекты в clarion? И еще если задаем левый ProgID то как отследить создался он или нет. Ловить EasyMailHandle бесполезно.
EasyMailHandle = Create(0,create:ole)
ProgID = 'EasyMail.SMTP'
EasyMailHandle{prop:create}=ProgID
EasyMailHandle = Create(0,create:ole)
ProgID = 'EasyMail.SMTP'
EasyMailHandle{prop:create}=ProgID
- Дед Пахом
- Старичок
- Сообщения: 3289
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 49 раз
- Контактная информация:
Re: COM объект не виден из С6
Не говорите ерунды - если комок нормальный и создаётся без проблем в, скажем VBScript, то он без тех же проблем создастся и в Clarion именно так, как я писал выше. Проверьте ProgId (проверяйте по реестру, она может быть чуть хитрее, типа 'EasyMail.SMTP.254'). Проверьте, что OLE-контрол создаётся уже после открытия окна. Ещё что-нибудь проверьте 

С уважением, ДП
- WadimZapara
- Активист
- Сообщения: 181
- Зарегистрирован: 11 Июнь 2008, 12:11
- Откуда: Тамбов
Re: COM объект не виден из С6
Даже в примерах на сайте разработчика видно такое использование: CreateObject("EasyMail.SMTP.6")
(в примерах ветки Samples > EasyMail Objects > ASP: "Send a HTML Message Using the SMTP Object", "Send a Message Using the SMTP Object with Attachments", "Send a Message Using the SMTP Object - Imports text from a system file into the message body.", "Send a Message with ESMTP extensions", "Error Handing for the SMTP Send() Method")
(Встречаются куски кода: CreateOleObject('EasyMail.POP3.6'), CreateObject("EasyMail.IMAP4.6"), <CFOBJECT ACTION="Create" NAME="SMTP" CLASS="EasyMail.SMTP.6">, $code = Win32::OLECreateObject('EasyMail.SMTP.6',$SMTP)
Если не получилось использование EasyMail.SMTP, почему было не испытать EasyMail.SMTP.6 ?
(в примерах ветки Samples > EasyMail Objects > ASP: "Send a HTML Message Using the SMTP Object", "Send a Message Using the SMTP Object with Attachments", "Send a Message Using the SMTP Object - Imports text from a system file into the message body.", "Send a Message with ESMTP extensions", "Error Handing for the SMTP Send() Method")
(Встречаются куски кода: CreateOleObject('EasyMail.POP3.6'), CreateObject("EasyMail.IMAP4.6"), <CFOBJECT ACTION="Create" NAME="SMTP" CLASS="EasyMail.SMTP.6">, $code = Win32::OLECreateObject('EasyMail.SMTP.6',$SMTP)
Если не получилось использование EasyMail.SMTP, почему было не испытать EasyMail.SMTP.6 ?

Компьютер имеет то преимущество перед мозгом, что им пользуются...
- WadimZapara
- Активист
- Сообщения: 181
- Зарегистрирован: 11 Июнь 2008, 12:11
- Откуда: Тамбов
Re: COM объект не виден из С6
Может быть Вы и правы, может у меня руки кривые...Дед Пахом писал(а):Не говорите ерунды - если комок нормальный и создаётся без проблем в, скажем VBScript, то он без тех же проблем создастся и в Clarion
Но попробуйте выполнить аналог следующего кода, который полностью работает, например в макросах EXCEL, но не хочет из-под Клары, или работает местами:
Код: Выделить всё
Set AD=CreateObject("ADSystemInfo")
CALL MsgBox "This Computer Name in Active Directory is " & AD.ComputerName
CALL MsgBox "My name is " & AD.UserName
CALL MsgBox "My Domain name is " & AD.DomainDNSName & " or " & AD.DomainShortName
Объясните, где кривизна моих рук или что есть "ерунда".

P.S. По указанной причине пришлось идти другим путём...
Компьютер имеет то преимущество перед мозгом, что им пользуются...
- Дед Пахом
- Старичок
- Сообщения: 3289
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 49 раз
- Контактная информация:
Re: COM объект не виден из С6
Вадим,
я не буду ставить у себя ни 2К, ни XP, ни даже Win98, и не уговаривайте!
А если серьёзно, то во времена Win98 Клара была ещё маленькой (5.5 в лучшем случае). И работать она умела только с OLE.
PS
С Active Directory я немного возился - генерил классы с помощью EasyCOM2INC, делал программку чтения списка юзеров, всё работало как часы.
я не буду ставить у себя ни 2К, ни XP, ни даже Win98, и не уговаривайте!

А если серьёзно, то во времена Win98 Клара была ещё маленькой (5.5 в лучшем случае). И работать она умела только с OLE.
PS
С Active Directory я немного возился - генерил классы с помощью EasyCOM2INC, делал программку чтения списка юзеров, всё работало как часы.
С уважением, ДП
- WadimZapara
- Активист
- Сообщения: 181
- Зарегистрирован: 11 Июнь 2008, 12:11
- Откуда: Тамбов
Re: COM объект не виден из С6
Спасибо, дружище, за ответ!
А не похож ли Ваш постскриптум на поговорку: "Гречневая каша себя хвалит!"
Может, и коды льготной (читай бесплатной) регистрации на EasyCOM2INC предложишь (может мылом - у меня на рамблере) ?
Был бы благодарен...
(Знаешь, служу в УВД области. Для него, родного, и пишу программы. Денег на ПО - не выбить. Потому приходится всё самому да самому...
Или побираться.
Олег Руденко, например, мне помог. Спасибо ему.)

А не похож ли Ваш постскриптум на поговорку: "Гречневая каша себя хвалит!"

Может, и коды льготной (читай бесплатной) регистрации на EasyCOM2INC предложишь (может мылом - у меня на рамблере) ?
Был бы благодарен...
(Знаешь, служу в УВД области. Для него, родного, и пишу программы. Денег на ПО - не выбить. Потому приходится всё самому да самому...
Или побираться.

Компьютер имеет то преимущество перед мозгом, что им пользуются...
- Дед Пахом
- Старичок
- Сообщения: 3289
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 49 раз
- Контактная информация:
Re: COM объект не виден из С6
Да легко. Мне только нужен Send code (Help -> Registration). Почта "mikeduglas @@@@ yandex.ru"WadimZapara писал(а): Может, и коды льготной (читай бесплатной) регистрации на EasyCOM2INC предложишь (может мылом - у меня на рамблере) ?
С уважением, ДП
- WadimZapara
- Активист
- Сообщения: 181
- Зарегистрирован: 11 Июнь 2008, 12:11
- Откуда: Тамбов
Re: COM объект не виден из С6
Спасибо, Михаил.
Компьютер имеет то преимущество перед мозгом, что им пользуются...