Текущий архив: 2005.11.06;
Скачать: CL | DM;
ВнизЧёртов Service Найти похожие ветки
← →
Vladimyr © (2005-03-11 11:28) [0]Доброе время суток всем, кто сумел написать сервис на KOL :)
У меня возникла следующая проблема: до момента показа формы всё работает нормально, а в момент закрытия оной вылезает ошибка обращения к памяти по адресу "00000000".
Код примерно такой:
1. в файле "Testserv_1.inc":if Start then exit;
2. в файле "TestServ.dpr":function Start: boolean; stdcall;
begin
ServTable[0].lpServiceName := SERVICE_NAME;
ServTable[0].lpServiceProc := @ServiceProc;
ServTable[1].lpServiceName := nil;
ServTable[1].lpServiceProc := nil;
result := StartServiceCtrlDispatcher (ServTable[0]);
if not result and (GetLastError = ERROR_FAILED_SERVICE_CONTROLLER_CONNECT) then
MsgOK ("Usual start...");
end;
(то есть проверяем, как стартовали - как сервис или как приложение, и во втором случае запускаем апплет обычным порядком - тут всё OK, апплет стартует и нормально завершается)procedure ServiceProc(argc: DWORD; var argv: array of PChar) stdcall;
begin
...
NewForm1 (Form1, pointer (Applet));
run (Applet);
end;
...а вот тут ошибка - апплет стартует нормально, а в момент завершения обращается к несуществующей памяти...
Сердцем чую, что какая-нибудь ерунда... :-)
← →
Vladimyr © (2005-03-11 12:22) [1]Ещё одно странное наблюдение:
если в процедуре "ServiceProc
" добавить после "run (Applet);
" команду "MsgOK ("The end");
" или "sleep (100);
", то апплет завершается без ошибки!
Вот это уж совсем непонятно... ==(
(хотя вроде бы решает проблему)
← →
Vladimyr © (2005-03-11 12:38) [2]Вроде бы нашёл причину: статус сервиса в процедуре
ServiceCtrlHandler
у меня обновлялся с интервалом 100 мс...
Сам спросил, сам и ответил... <;*}
Страницы: 1 вся ветка
Текущий архив: 2005.11.06;
Скачать: CL | DM;
Память: 0.44 MB
Время: 0.035 c