Форум: "Сети";
Текущий архив: 2003.07.03;
Скачать: [xml.tar.bz2];
ВнизСвязка ActiveX и WEB - проблемы! Найти похожие ветки
← →
Gremlin (2003-04-25 13:03) [0]Здравствуйте, уважаемые.
Требуется консультация по поводу связки 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) [1]up
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2003.07.03;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c