Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.16;
Скачать: CL | DM;

Вниз

Внешний 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
1-52195
MakNik
2003-12-05 12:37
2003.12.16
DateTimePicker


14-52369
Goida
2003-11-22 21:57
2003.12.16
Хочу создать сайт. Но как?


1-52142
Mishenka
2003-12-03 20:50
2003.12.16
Запуск файла из проги???


1-52262
dilp
2003-12-04 13:00
2003.12.16
как узнать что приложение запущено по ярлыку?


14-52392
Думкин
2003-11-21 04:43
2003.12.16
С днем рождения! 21 ноября.