![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Передача строкового параметра в 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)