Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Связка ActiveX и WEB - проблемы! [D6, Win2k]


Gremlin ©   (2003-04-25 13:03:00) 

Здравствуйте, уважаемые.
Требуется консультация по поводу связки ActiveX и WWW, а конкретно интересует работа OCX-файлов.
Создаю Active Form на нём обычную кнопку. В этом же проекте статически загружаю DLL и на событие Button1Click выполняю процедуру из подключенной DLL:

…
implementation
uses ComObj, ComServ;
{$R *.DFM}
procedure RunProc01(); stdcall; external "MyDLL01.dll";
{ TMyActiveFX01 }
…
procedure TMyActiveFX01.Button1Click(Sender: TObject);
begin
RunProc01();
end;


Данная DLL выглядит следующим образом:


library MyDLL01;
uses
Windows, SysUtils, Messages, ShellAPI;

procedure Test02() export; stdcall;
begin
MessageBox(0, PChar("It work!!!"), PChar("Message from DLL"), 0);
end;

procedure RunProc01() export; stdcall;
begin
MessageBox(0, PChar("It work!!!"), PChar("Message from DLL"), 0);
try
ShellExecute(0, "open", "vcstub.exe", nil, nil, SW_SHOW);
except
MessageBox(0, PChar("ShellExecute dos""t work!!!"), PChar("Message from DLL"), 0);
end; {try}
end;

exports
Test02, RunProc01;

begin
end.


Далее в проекте:
Project-> WedDeploymentOptionsвыставляю всё как надо, в том числе в Additional Filesвставляю vcstub.exeи MyDLL01.dll.
Далее Web deploy, создаётся ocx-файл, htm-файл и inf-файл соответственно.
При первомзапуске MyActiveFX01Proj1.htmсначала запускается vcstub.exe, потом подгружается непосредственно моя ActiveForm. При этом при вызове процедуры RunProc01()из DLL-ки сообщение выдаётся, но ShellExecute(0, "open", "vcstub.exe", nil, nil, SW_SHOW);не выполняется, хотя вроде и "vcstub.exe" и моя DLL-ка находятся в одном каталоге.
При последующихзапусках странички MyActiveFX01Proj1.htm vcstub.exeне запускается!
При изменении проекта (Caption у кнопки поменяли допустим) после повторного компилирования и Web Deploy проекта, содержащего AXForm-у, сама AXForm-a не обновляется на htm-страничке, несмотря на то, что казалось бы всё было собрано заново.
В связи со всем этим вопросы:

1). Возможности OCX-файлов в системе, их полномочия.
2). Каким образом сделать так, что бы мой exe-файл всегда запускался на выполнение при открытии html-страницы, на которой расположена моя ActiveForm?
3). Как добиться обновления OCX-файлов после их повторной сборки?
4). Я не нашёл место, куда система записывает ocx, dll и exe файлы, когда пользователь заходит на страницу с AXForm:

…
OBJECT
classid="clsid:9EAEAD86-B907-4912-AE46-8B5EF41C7EE0"
codebase=file://I /temp/2del/UrlTest/MyActiveFX01Proj1.inf
…

сам INF:

;Delphi-generated INF file for MyActiveFX01Proj1.ocx
[Add.Code]
MyActiveFX01Proj1.ocx=MyActiveFX01Proj1.ocx
VCStub.exe=VCStub.exe
MyDLL01.dll=MyDLL01.dll

[MyActiveFX01Proj1.ocx]
file=file://I/temp/2del/UrlTest/MyActiveFX01Proj1.ocx
clsid={9EAEAD86-B907-4912-AE46-8B5EF41C7EE0}
RegisterServer=yes

[VCStub.exe]
file=file://I/temp/2del/UrlTest/VCStub.exe

[MyDLL01.dll]
file=file://I/temp/2del/UrlTest/MyDLL01.dll


5). Почему не работают функции их ShellAPI типа ShellExecute?
6). Посоветуйте толковуюлитературу по данной теме, а то в Тейксейре и в остальных своих книгах, имеющих отношение к COM based технологиям про использовании ActiveX в WEB сказано вскользь.

Спасибо.


Gremlin   (2003-04-28 14:51:00) [1]

up


Наверх

Титульная страница Поиск, карта сайта Написать письмо