Конференция "Corba" » Передача строкового параметра в COM из HTML страницы
 
  • Layner © (21.11.06 13:15) [0]
    Из тест программы обращаюсь к 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?
  • umbra © (22.11.06 19:40) [1]
    CreateObject вбскрипта создет только оле-сервера (т.е. Ваш интерфейс должен быть наследником
    IDispatch

    )
  • Layner © (24.11.06 18:24) [2]
    Вот полностью код 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 © (24.11.06 18:47) [3]
    так а предок у
    IParse7

    кто? похоже, что
    IUnknown

    . Если это так, то вбскрипт не сможет создать экземпляр сервера
  • umbra © (24.11.06 19:05) [4]
    или, по крайней мере, экземпляр не будет правильно работать
  • isasa © (27.11.06 11:09) [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.
  • isasa © (27.11.06 11:12) [6]
    Да, соответственно, инициализация

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


  • Layner © (27.11.06 19:55) [7]
    isasa ©   (27.11.06 11:12)


    Спасибо, попробую, сообщу.
    Подобная задача решается в программе Reget, юзер кликает контекстную ссылку в IE, "Закачать при помощи Reget", вызывается страница на VBS как в [1], и в ней передается на COM, вот интересно, я делаю такую же страницу, а вот COM не отрабатывает.. (из программы на Delphi работает).
  • umbra © (27.11.06 20:22) [8]
    Вам просто надо создавать не COM object, а как сказано в [5],  Automation object
    (File\New\Other\ActiveX\Automation Object).
  • Layner © (06.12.06 18:15) [9]
    umbra ©   (27.11.06 20:22)


    umbra, спасибо, только сейчас открыл эту тему, я думал это обычный COM объект, который может это делать.. Сейчас книги пошерстю про Automation object.
 
Конференция "Corba" » Передача строкового параметра в COM из HTML страницы
Есть новые Нет новых   [134431   +9][b:0][p:0.001]