-
Здравствуйте! Проблема в следующем: написанный на Delphi 7 DCOM сервер в службе Win32 (DCOM server in Win32 service) прекрасно работает под Win2K и WinXP, но не работает под Windows Server 2003.
Технические детали: использовались мастера Delphi: Service Application и Remote Data Module. Служба запускается и спокойно работает, но не происходит даже Create у Remote Data Module. При этом TComponentFactory.Create отрабатывает без Exception. -
vlad_ri (29.09.07 03:07) [1]Если есть возможность, перекомпилируйте сервер более новым компилятором (например из BDS 2006). У нас было что-то подобное, компонент для COM+ (с Remote Data Module) отлично работал в Win2k/XP и не работал в Win2k3. Помогла перекомпиляция в BDS 2006.
-
clickmaker © (02.10.07 12:44) [2]возможно, поможет
.dprif not IsWin2003 then
Application.Initialize;
главный модульconst
WM_INITAPP = WM_APP + 1;
procedure TMyServer.AppMessage(var Msg: TMsg; var Handled: Boolean);
begin
if (Msg.message = WM_INITAPP) and (FEvent <> 0) then begin
Application.Initialize;
SetEvent(FEvent);
end;
end;
procedure TMyServer.ServiceStart(Sender: TService; var Started: Boolean);
begin
if IsWin2003 then begin
Forms.Application.OnMessage := AppMessage;
FEvent := CreateEvent(nil, true, false, nil);
PostMessage(Forms.Application.Handle, WM_INITAPP, 0, 0);
WaitForSingleObject(FEvent, INFINITE);
CloseHandle(FEvent);
FEvent := 0;
Forms.Application.OnMessage := nil;
end;
CoInitializeEx(nil, COINIT_APARTMENTTHREADED);
...
end;
function IsWin2003: boolean;
begin
Result := (Win32MajorVersion > 4) and (Win32MinorVersion > 1);
end; -
Спасибо Сергею М. за ссылку http://www.delphikingdom.info/asp/answer.asp?IDAnswer=54223 в ветке COM сервер в Win32 Service (http://pda.delphimaster.net/?id=1158154010&n=8)
Теперь все работает.