Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];

Вниз

работа с 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.035 c
14-1096871052
bar
2004-10-04 10:24
2004.10.31
Какой мобильник лучше и надёжнее?


14-1096930070
NiceManiac
2004-10-05 02:47
2004.10.31
Ламоразмы и обшибки.


14-1097527662
Cobalt
2004-10-12 00:47
2004.10.31
Безнадежные проекты :)


3-1096464925
Хома
2004-09-29 17:35
2004.10.31
Connect to Informix


3-1096959444
Пуртик
2004-10-05 10:57
2004.10.31
Зависание проги...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский