COM объект не виден из С6

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
seawolf
Старожил
Сообщения: 217
Зарегистрирован: 08 Июль 2005, 11:23
Откуда: St. Petersburg

COM объект не виден из С6

Сообщение seawolf »

Уважаемые коллеги,
Порекомендовали мне тут набор 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

Сообщение WadimZapara »

Вообще-то, COM <> OLE и COM <> OCX
Поэтому в OLEDirectory его и нету. Но заюзать можно (наверное). А проверять наличие - 1-ый пришедший на ум вариант - через реестр.
Компьютер имеет то преимущество перед мозгом, что им пользуются...
seawolf
Старожил
Сообщения: 217
Зарегистрирован: 08 Июль 2005, 11:23
Откуда: St. Petersburg

Re: COM объект не виден из С6

Сообщение seawolf »

А чем его заюзать попробовать? Нужно что-то особенное?
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 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)
С уважением, ДП
seawolf
Старожил
Сообщения: 217
Зарегистрирован: 08 Июль 2005, 11:23
Откуда: St. Petersburg

Re: COM объект не виден из С6

Сообщение seawolf »

В том -то и дело что так не идет. Если объект виден из OleDirectory то работает (объект заданный по ProgID создается). А так вытаскиваем ProgID из реестра вручную далее его пишем в ProgID и объекта нет. По доке написано что ключ не нужен в течении 20 дней (период триал). Строки кода даже в фокспро элементарны (sample есть), получается что мы не можем использовать все подряд com объекты в clarion? И еще если задаем левый ProgID то как отследить создался он или нет. Ловить EasyMailHandle бесполезно.

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-контрол создаётся уже после открытия окна. Ещё что-нибудь проверьте :D
С уважением, ДП
Аватара пользователя
WadimZapara
Активист
Сообщения: 181
Зарегистрирован: 11 Июнь 2008, 12:11
Откуда: Тамбов

Re: COM объект не виден из С6

Сообщение WadimZapara »

Даже в примерах на сайте разработчика видно такое использование: 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 ? :(
Компьютер имеет то преимущество перед мозгом, что им пользуются...
Аватара пользователя
WadimZapara
Активист
Сообщения: 181
Зарегистрирован: 11 Июнь 2008, 12:11
Откуда: Тамбов

Re: COM объект не виден из С6

Сообщение WadimZapara »

Дед Пахом писал(а):Не говорите ерунды - если комок нормальный и создаётся без проблем в, скажем VBScript, то он без тех же проблем создастся и в Clarion :D
Может быть Вы и правы, может у меня руки кривые...
Но попробуйте выполнить аналог следующего кода, который полностью работает, например в макросах 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
Только, пожалуйста, попробуйте этот код на Win2000-Pro, WinXP, Win-98 (с установленным клиентом AD). У меня из-под VB - всё на всех ОС ок. А из-под Клары - "индейский домик" - фиг вам (т.е., кроме XP - под ней всё ок).
Объясните, где кривизна моих рук или что есть "ерунда". :cry:

P.S. По указанной причине пришлось идти другим путём...
Компьютер имеет то преимущество перед мозгом, что им пользуются...
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3289
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Re: COM объект не виден из С6

Сообщение Дед Пахом »

Вадим,
я не буду ставить у себя ни 2К, ни XP, ни даже Win98, и не уговаривайте! :D
А если серьёзно, то во времена Win98 Клара была ещё маленькой (5.5 в лучшем случае). И работать она умела только с OLE.

PS
С Active Directory я немного возился - генерил классы с помощью EasyCOM2INC, делал программку чтения списка юзеров, всё работало как часы.
С уважением, ДП
Аватара пользователя
WadimZapara
Активист
Сообщения: 181
Зарегистрирован: 11 Июнь 2008, 12:11
Откуда: Тамбов

Re: COM объект не виден из С6

Сообщение WadimZapara »

Спасибо, дружище, за ответ! :D
А не похож ли Ваш постскриптум на поговорку: "Гречневая каша себя хвалит!" :wink:
Может, и коды льготной (читай бесплатной) регистрации на EasyCOM2INC предложишь (может мылом - у меня на рамблере) ?
Был бы благодарен...
(Знаешь, служу в УВД области. Для него, родного, и пишу программы. Денег на ПО - не выбить. Потому приходится всё самому да самому...
Или побираться. :? Олег Руденко, например, мне помог. Спасибо ему.)
Компьютер имеет то преимущество перед мозгом, что им пользуются...
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3289
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Re: COM объект не виден из С6

Сообщение Дед Пахом »

WadimZapara писал(а): Может, и коды льготной (читай бесплатной) регистрации на EasyCOM2INC предложишь (может мылом - у меня на рамблере) ?
Да легко. Мне только нужен Send code (Help -> Registration). Почта "mikeduglas @@@@ yandex.ru"
С уважением, ДП
Аватара пользователя
WadimZapara
Активист
Сообщения: 181
Зарегистрирован: 11 Июнь 2008, 12:11
Откуда: Тамбов

Re: COM объект не виден из С6

Сообщение WadimZapara »

Спасибо, Михаил.
Компьютер имеет то преимущество перед мозгом, что им пользуются...
Ответить