Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.058 c
15-1272143249
Германн
2010-04-25 01:07
2010.08.27
Не могу поверить!


11-1217589019
rainstuff
2008-08-01 15:10
2010.08.27
Время и дата - некорректно отображение


8-1204132089
AntonUSAnoV
2008-02-27 20:08
2010.08.27
Хочу сделать не знаю как ...


15-1270326605
Юрий
2010-04-04 00:30
2010.08.27
С днем рождения ! 4 апреля 2010 воскресенье


2-1273755318
_guest_
2010-05-13 16:55
2010.08.27
впечатать содержимое RichEdit в произвольное место листа





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский