-
Из тест программы обращаюсь к 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?
-
CreateObject вбскрипта создет только оле-сервера (т.е. Ваш интерфейс должен быть наследником IDispatch )
-
Вот полностью код COM сервера, может действительно из HTML страницы не правильно вызываю, но из приложения этот COM сервер вызывается и возвращает Showmessage. А может hhh: IDispatch надо передавать в параметре ф-и? Что то запутался :( unit Unit1;
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;
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.
-
так а предок у IParse7 кто? похоже, что IUnknown . Если это так, то вбскрипт не сможет создать экземпляр сервера
-
или, по крайней мере, экземпляр не будет правильно работать
-
Попробуй так
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.
-
Да, соответственно, инициализация
...
initialization
TAutoObjectFactory.Create(ComServer, TParse7, Class_Parse7,
ciMultiInstance, tmApartment);
end.
-
isasa © (27.11.06 11:12) Спасибо, попробую, сообщу. Подобная задача решается в программе Reget, юзер кликает контекстную ссылку в IE, "Закачать при помощи Reget", вызывается страница на VBS как в [1], и в ней передается на COM, вот интересно, я делаю такую же страницу, а вот COM не отрабатывает.. (из программы на Delphi работает).
-
Вам просто надо создавать не COM object, а как сказано в [5], Automation object (File\New\Other\ActiveX\Automation Object).
-
umbra © (27.11.06 20:22) umbra, спасибо, только сейчас открыл эту тему, я думал это обычный COM объект, который может это делать.. Сейчас книги пошерстю про Automation object.
|