Форум: "Основная";
Текущий архив: 2003.12.16;
Скачать: [xml.tar.bz2];
ВнизВнешний COM-сервер Найти похожие ветки
← →
Genry (2003-12-04 17:23) [0]Доброго времени суток.
Подскажите, как сделать внешний COM сервер, который не содержал бы ни одной формы ? Пытался просто не добавлять ни одну форму в проект, но при вызове возникает ошибка: The Object Universal Unique Identifier (UUID) was not found. Это как бы понятно, потому что без главной формы процесс COM-сервера создается и сразу завершается в памяти (думаю причина ошибки в этом). А как сделать чтоб процесс "висел" в памяти без всяких форм и мог функционировать как полноценный COM-сервер ?
Заранее спасибо.
← →
Polevi (2003-12-04 18:31) [1]ActiveX Library для этих целей предназначена
← →
Genry (2003-12-04 19:00) [2]Извиняюсь, я немного не до конца объяснил.
Нужен COM-сервер, который содержал бы в себе несколько объектов, поддерживающих разные интерфейсы. Все объекты - невизуальные и их методы предназначены для различных целей, в т.ч. записи в базу. Нужно чтоб сервер был именно внешний (EXE а не DLL), по определенным причинам.
Непонимаю, как ActiveX может помочь в данной ситуации ?
Сами объекты с интерфейсами я уже создал, и все работает как надо, остался открытым лишь вопрос как убрать главную форму из этого приложения (COM-сервера). Это нужно по нескольким причинам. Во-первых при любом Raise на заднем плане выскакивает эта форма, а во вторых она не нужна там по смыслу.
← →
me (2003-12-04 21:12) [3]Ну так запретим показывать форму примерно так (или вообще присвоить False)
Application.ShowMainForm := ComServer.StartMode = smStandalone;
← →
Nikolay M. (2003-12-04 21:44) [4]Удалить вообще эту форму из проекта?
← →
Genry (2003-12-04 21:54) [5]
> me (04.12.03 21:12) [3]
Спасибо, так и сделал.
Но я думал, что можно как-то вобще без этой формы обойтись, ведь она в проекте по сути дела не нужна.
> Nikolay M. © (04.12.03 21:44) [4]
Я уже говорил выше, что без формы ничего не работает, так как процесс COM-сервера запускается и сразу же завершается в памяти. Так же как и обычный EXE файл, если в нем не создаются никакие формы. Поэтому обращение к нему приводит к ошибке.
В любом случае, всем спасибо.
← →
Юрий Федоров (2003-12-04 21:57) [6]>>Genry (04.12.03 21:54) [5]
Я тоже так делал, разбираться досконально времени не было, сделал как быстрее.
Думаю, в любом случае придется создавать какое-то окно (хотя бы AllocateHWND )и писать цикл обработки сообщений
← →
Бином Ньютоныч (2003-12-04 22:11) [7]Напиши в файле проекта так:
uses
Forms,
Windows,
.....
{$R *.TLB}
{$R *.res}
var
Msg: TMsg;
begin
Application.Initialize;
while GetMessage(Msg, 0, 0, 0) do
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
end.
← →
Ломброзо (2003-12-04 22:27) [8]Ньютоныч, что-то мне кажется, что попытка запустить этот код с ключом regserver окажется неудачной.
← →
Бином Ньютоныч (2003-12-04 22:53) [9]>Ломброзо © (04.12.03 22:27) [8]
Да? А мне чет не кажется:) TComServer.Initialize вызывает Halt по этому поводу
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.12.16;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c