Главная страница
    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.47 MB
Время: 0.06 c
15-1275549850
Медвежонок Пятачок
2010-06-03 11:24
2010.08.27
не будь похожим, а то проиграешь


15-1265614586
Andy BitOff
2010-02-08 10:36
2010.08.27
Крик души в чате.


15-1272893564
red_imp
2010-05-03 17:32
2010.08.27
Меломанам )))


2-1274175056
namco
2010-05-18 13:30
2010.08.27
odbc c delphi


2-1266331529
Zalm
2010-02-16 17:45
2010.08.27
idFTP





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский