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

Вниз

Завершить сервис   Найти похожие ветки 

 
ВГГ   (2007-04-12 21:58) [0]

Есть сервис, хочу завершить, его при нажатии кнопки ОК,
на нее вешаю ExitThread(0); неработает!
Пробывал подать в SetServiceStatus с флагом стоп, тоже ничего,
он должен подать менежу службу о прибивке моего сервиса,
но жует табак и игнорирует.

Для проверки перед ExitThread(0); делал месагебок
и он появляется!но прога висит


 
ВГГ   (2007-04-12 23:38) [1]

сервис мой конечно,
идеи будут? кроме ручной остановки в службах


 
koha ©   (2007-04-13 05:18) [2]


> идеи будут?


- едеи то будут если сервис под NT, то может быть так:

function SvcStopService(SvcName: String): Boolean;
Var HSCMan, HSrv: SC_HANDLE;
   SvcStatus   : TServiceStatus;
   dwCheckPoint: DWord;
begin
 HSCMan:=WinSvc.OpenSCManager(Nil,Nil,SC_MANAGER_ALL_ACCESS);
 if HSCMan = 0 then exit;
 HSrv:=OpenService(HSCMan,PChar(SvcName),SERVICE_STOP or SERVICE_QUERY_STATUS);
 if HSrv > 0 then begin
   if ControlService(HSrv,SERVICE_CONTROL_STOP,SvcStatus) then
     if QueryServiceStatus(HSrv,SvcStatus) then
       while SERVICE_STOPPED <> SvcStatus.dwCurrentState do begin
         dwCheckPoint := svcstatus.dwCheckPoint;
         Sleep(SvcStatus.dwWaitHint);
         if not QueryServiceStatus(HSrv,SvcStatus) then break;
         if SvcStatus.dwCheckPoint < dwCheckPoint then break;
       end;
   if SERVICE_STOPPED = SvcStatus.dwCurrentState then Result := true;
   CloseServiceHandle(HSrv);
 end;
 CloseServiceHandle(HSCMan);
end;


 
Сергей М. ©   (2007-04-13 08:39) [3]


> хочу завершить, его при нажатии кнопки ОК


Попробуй кнопку CANCEL, авось получится)

ОК-то тут причем ? И где эта кнопка находится, в каком приложении ?


 
ВГГ   (2007-04-13 18:18) [4]

в моем приложении , кнопка на форме и при нажатии
я выхожу,тоесть halt


 
ВГГ   (2007-04-13 18:42) [5]

причем функция работает в другом приложении - закрывает сервис,
а если изнутри , то не работает!

функция выше


 
koha ©   (2007-04-14 04:58) [6]

> ВГГ   (13.04.07 18:42) [5]

И правильно пока Service Control Menedger хоть один активный хендел держит этого сервиса он и не завершится.


 
koha ©   (2007-04-14 05:43) [7]

Вызов с собственным процессом StopProcess(GetCurrentProcessID)
Испытал в сбственной службе NT (Служба без свойств: Stop,Pause)
- Работает

procedure StopProcess(dwPID: Cardinal): Boolean;
Var HPROC:THandle;
begin
 try
   HPROC := OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPID);
   if HPROC = 0  then begin
     //RaiseLastOSError; //По желанию.
     exit;
   end;
   result:=TerminateProcess(HPROC, DWORD(-1));
 finally
  CloseHandle(HPROC);
 end;
end;



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

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

Наверх





Память: 0.46 MB
Время: 0.046 c
2-1176288154
>>DEATH<<
2007-04-11 14:42
2007.05.06
Посоветуйте!!!!!!!!!!!


3-1171369985
Layner
2007-02-13 15:33
2007.05.06
Можно ли через ADOConnection узнать все SQL запросы


2-1176295679
Ezorcist
2007-04-11 16:47
2007.05.06
Отреагировать на ошибку 10061 TClientSocket-a


15-1176215375
Pazitron_Brain
2007-04-10 18:29
2007.05.06
Ноутбук с перепаянным портом для блока питания


1-1173267760
DmitrichJ
2007-03-07 14:42
2007.05.06
Генератор в MSSQL. Бьюсь уже 2-а дня.





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