Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

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

 
Layner ©   (2006-11-21 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 ©   (2006-11-22 19:40) [1]

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


 
Layner ©   (2006-11-24 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 ©   (2006-11-24 18:47) [3]

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


 
umbra ©   (2006-11-24 19:05) [4]

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


 
isasa ©   (2006-11-27 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 ©   (2006-11-27 11:12) [6]

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

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



 
Layner ©   (2006-11-27 19:55) [7]

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


 
umbra ©   (2006-11-27 20:22) [8]

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


 
Layner ©   (2006-12-06 18:15) [9]

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



Страницы: 1 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.103 c
15-1268773367
Nic
2010-03-17 00:02
2010.08.27
НДС - непонятно немного


15-1268385262
Jeer
2010-03-12 12:14
2010.08.27
Нас посчитали


2-1266325693
Rail
2010-02-16 16:08
2010.08.27
как правильно указать путь к бд


15-1269190277
конструктор
2010-03-21 19:51
2010.08.27
АОП в DELPHI


2-1266177784
Дмитрий
2010-02-14 23:03
2010.08.27
алиасы в FB_embedded 2.1