Форум: "Corba";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
ВнизПередача строкового параметра в 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 вся ветка
Форум: "Corba";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.069 c