Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Передача строкового параметра в COM из HTML страницы


Layner ©   (2006-11-21 13:15:00) 

Из тест программы обращаюсь к COM серверу без проблем, а вот из браузера/HTML страницы не могу вызвать.. Код страницы (объект создается но результата работы функции нет):

<SCRIPT language="VBScript">
 On Error Resume Next
   Set MyObj=CreateObject("ProjectParse.Parse7")
   If err<>0 then
       MsgBox("Модуль ProjectParse.Parse7 не установлен!")
   Else
MyObj.FuncParse("uuu")
   End If
</SCRIPT>


из тест-программы этот код выглядит так (и работает):

var
 Form1: TForm1;
 Interface1: IParse7;
...
procedure TForm1.Button1Click(Sender: TObject);
begin
 Interface1.FuncParse('Сейчас: '+ DateTimeToStr(Now));
end;


Вопрос, как из браузера все таки докапаться до моего COM?


Layner   (2006-12-06 18:15:00) [1]

umbra ©   (27.11.06 20:22)
umbra, спасибо, только сейчас открыл эту тему, я думал это обычный COM объект, который может это делать.. Сейчас книги пошерстю про Automation object.


umbra   (2006-11-27 20:22:00) [2]

Вам просто надо создавать не COM object, а как сказано в [5],  Automation object
(File\New\Other\ActiveX\Automation Object).


Layner   (2006-11-27 19:55:00) [3]

isasa ©   (27.11.06 11:12)
Спасибо, попробую, сообщу.
Подобная задача решается в программе Reget, юзер кликает контекстную ссылку в IE, "Закачать при помощи Reget", вызывается страница на VBS как в [1], и в ней передается на COM, вот интересно, я делаю такую же страницу, а вот COM не отрабатывает.. (из программы на Delphi работает).


isasa   (2006-11-27 11:12:00) [4]

Да, соответственно, инициализация

...
initialization
 TAutoObjectFactory.Create(ComServer, TParse7, Class_Parse7,
   ciMultiInstance, tmApartment);
end.


isasa   (2006-11-27 11:09:00) [5]

Попробуй так

TParse7 = class(TAutoObject)
.....

TAutoObject is a CoClass that supports the IDispatch interface, and that can be used as a base class for ActiveX Automation servers.


umbra   (2006-11-24 19:05:00) [6]

или, по крайней мере, экземпляр не будет правильно работать


umbra   (2006-11-24 18:47:00) [7]

так а предок у IParse7кто? похоже, что IUnknown. Если это так, то вбскрипт не сможет создать экземпляр сервера


Layner   (2006-11-24 18:24:00) [8]

Вот полностью код COM сервера, может действительно из HTML страницы не правильно вызываю, но из приложения этот COM сервер вызывается и возвращает Showmessage. А может hhh: IDispatchнадо передавать в параметре ф-и? Что то запутался :(

unit Unit1;

{$WARN SYMBOL_PLATFORM OFF}

interface

uses
 Windows, ActiveX, Classes, ComObj, ProjectParse_TLB, StdVcl, Dialogs;

type
 TParse7 = class(TTypedComObject, IParse7)
 protected
   function FuncParse(const hhh: IDispatch; const s: WideString): HResult;
     stdcall;
   {Declare IParse7 methods here}
 end;

implementation

uses ComServ;

function TParse7.FuncParse(const hhh: IDispatch;
 const s: WideString): HResult;
begin
  Showmessage('Это нам пришло от какой то программы:'+#09+s);
  Result:=S_OK;
end;

initialization
 TTypedComObjectFactory.Create(ComServer, TParse7, Class_Parse7,
   ciMultiInstance, tmApartment);
end.


umbra   (2006-11-22 19:40:00) [9]

CreateObject вбскрипта создет только оле-сервера (т.е. Ваш интерфейс должен быть наследником IDispatch)


Наверх

Титульная страница Поиск, карта сайта Написать письмо