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

Вниз

работа с TService   Найти похожие ветки 

 
shelest   (2004-09-23 17:21) [0]

Если кто работал с компонентой TService, скажите почему она не позволяет производить изменения в системе(запись в реестре, запуск файла и тд.).
Вот код:
procedure ServiceController(CtrlCode: DWord); stdcall;
begin
 SPECTR_Update.Controller(CtrlCode);
end;

function TSPECTR_Update.GetServiceController: TServiceController;
begin
 Result := ServiceController;
end;

procedure TSPECTR_Update.ServiceExecute(Sender: TService);
begin
while not Terminated do begin
 ServiceThread.ProcessRequests(True);
end;

end;

procedure TSPECTR_Update.ServiceStart(Sender: TService;
 var Started: Boolean);
begin
Timer1.Enabled:=True;
end;

procedure TSPECTR_Update.ServiceStop(Sender: TService;
 var Stopped: Boolean);
begin
 Timer1.Enabled:=False;
end;

procedure TSPECTR_Update.Timer1Timer(Sender: TObject);
var
local_ver, distr_ver:cardinal;
si:STARTUPINFO;
pi:PROCESS_INFORMATION;

begin
 local_ver:=GetFileVersion("C:\RAY\bin\VDClientKernel.dll");
 distr_ver:=GetFileVersion("\\spectr\newspectr$\bin\VDClientKernel.dll");
 ZeroMemory(@si,sizeof(si));
 si.cb:=SizeOf(si);
 CreateProcess( nil, // No module name (use command line).
 "C:\WINDOWS\regedit.exe",// Command line.
 nil,             // Process handle not inheritable.
 nil,             // Thread handle not inheritable.
 False,           // Set handle inheritance to FALSE.
 0,               // No creation flags.
 nil,             // Use parent"s environment block.
 nil,             // Use parent"s starting directory.
 si,              // Pointer to STARTUPINFO structure.
 pi );             // Pointer to PROCESS_INFORMATION structure.

beep;
end;

Может я что неправильно делаю?


 
Digitman ©   (2004-09-23 17:48) [1]

1. Очисть обработчик ServiceStart() - бестолково совершенно
2. Что за блажь - по тику таймера стартовать аж целый процесс regedit, в то время как модификация реестра - примитивнейший алгоритм с непоср.использованием соотв.WinAPI-функций ?


 
shelest   (2004-09-24 09:00) [2]

To Digitman ©

Это просто проверка.
Я могбы там и ноутпад загрузить.
Просто хотел узнать запустится приложение или нет.
Так вот оно не запустилось.

P. S. А про TRegistry я знаю :)


 
Digitman ©   (2004-09-24 10:17) [3]


> shelest


ты в курсе, что CreateProcess - функция ? почему не анализируешь рез-т ее выполнения ? хотя бы в целях отладки ?

таймер у тебя как создается ? ты просто бросил TTimer на модуль данных сервиса ? если так, то обработчик TSPECTR_Update.Timer1Timer должен вызываться в осн.трэде процесса сервиса, в то время как обращение к его св-ву Enabled происходит в доп.трэде ServiceThread, и это неверно, потому что трэды эти никак не синхронизированы - сервис в ответ на стоп-контроллер установит Timer.Enabled := False и тут же завершается, в то время как в этот момент обработчик события OnTimer может еще выполняться


 
Erik1 ©   (2004-09-24 16:46) [4]

Ну и изврат, я бы так недогодался. :)
А почему бы тебе в ServiceExecute всю работу невполнить? К томуже либо ты используеш ServiceExecute либо работаеш на событиях ServiceStart ServiceStop.
 Я запускал свой тред в ServiceStart и там работал, в этом подходе есть большой плюс. Очень удобно отлаживать в отдельном проекте.


 
t'Ice   (2004-09-28 15:37) [5]

ServiceThread.ProcessRequests(False);
так будет правильно.


 
Digitman ©   (2004-09-28 16:26) [6]


> t"Ice   (28.09.04 15:37) [5]
> ServiceThread.ProcessRequests(False);
> так будет правильно.


глупости



Страницы: 1 вся ветка

Текущий архив: 2004.10.31;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.071 c
14-1097200407
Думкин
2004-10-08 05:53
2004.10.31
С днем рождения! 8 октября


14-1097582626
1008
2004-10-12 16:03
2004.10.31
Схемы мониторов.


9-1088312156
X-Disa
2004-06-27 08:55
2004.10.31
Скролл экрана


8-1091469093
Кириешки
2004-08-02 21:51
2004.10.31
Проблема с sndPlaySound


3-1096884772
_none_
2004-10-04 14:12
2004.10.31
stream read error





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский