Delphi - como puedo parar un servicio

 
Vista:

como puedo parar un servicio

Publicado por Luis Villarino (1 intervención) el 11/02/2005 00:45:22
como puedo parar e iniciar un servicio de windows usnado delphi, lo que desoe hacer es para el sql server hacer una cosas y despues iniciarlo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:como puedo parar un servicio

Publicado por Elena (330 intervenciones) el 11/02/2005 13:33:52
Chequea a ver si este ejemplo te ayuda en algo:
http://64.233.161.104/search?q=cache:ej4C1kt2Tj0J:www.2p.cz/download/howto/windows_nt_service_dual%2520_interface.pdf+ServiceStartName+delphi&hl=es
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:como puedo parar un servicio

Publicado por Elena (330 intervenciones) el 11/02/2005 13:38:49
Acá tienes otro ejemplo:
http://www.delphipraxis.net/post209534.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:como puedo parar un servicio

Publicado por Lauro (11 intervenciones) el 15/02/2005 10:24:15
Hola, Aqui tienes las Funciones para

Detectar su estado
Detenerlo
Iniciarlo

//-----------------------------------------------------------------------
Function ServiceStart(sMachine, sService: String): Boolean;
Var
schm,
schs: SC_Handle;
ss: TServiceStatus;
psTemp: PChar;
dwChkP: DWord;
Begin
ss.dwCurrentState := -0;
schm := OpenSCManager(PChar(sMachine), Nil, SC_MANAGER_CONNECT);
If (schm > 0) Then
Begin
schs := OpenService(schm, PChar(sService), SERVICE_START Or
SERVICE_QUERY_STATUS);
If (schs > 0) Then
Begin
psTemp := Nil;
If (StartService(schs, 0, psTemp)) Then
If (QueryServiceStatus(schs, ss)) Then
While (SERVICE_RUNNING <> ss.dwCurrentState) Do
Begin
dwChkP := ss.dwCheckPoint;
Sleep(ss.dwWaitHint);
If (Not QueryServiceStatus(schs, ss)) Then
Break;
If (ss.dwCheckPoint < dwChkP) Then
Break;
End;
CloseServiceHandle(schs);
End;
CloseServiceHandle(schm);
End;
Result := SERVICE_RUNNING = ss.dwCurrentState;
End;

//-----------------------------------------------------------------------

Function ServiceStop(sMachine, sService: String): Boolean;
Var
schm,
schs: SC_Handle;
ss: TServiceStatus;
dwChkP: DWord;
Begin
schm := OpenSCManager(PChar(sMachine), Nil, SC_MANAGER_CONNECT);
If (schm > 0) Then
Begin
schs := OpenService(schm, PChar(sService), SERVICE_STOP Or
SERVICE_QUERY_STATUS);
If (schs > 0) Then
Begin
If (ControlService(schs, SERVICE_CONTROL_STOP, ss)) Then
If (QueryServiceStatus(schs, ss)) Then
While (SERVICE_STOPPED <> ss.dwCurrentState) Do
Begin
dwChkP := ss.dwCheckPoint;
Sleep(ss.dwWaitHint);
If (Not QueryServiceStatus(schs, ss)) Then
Break;
If (ss.dwCheckPoint < dwChkP) Then
Break;
End;
CloseServiceHandle(schs);
End;
CloseServiceHandle(schm);
End;
Result := SERVICE_STOPPED = ss.dwCurrentState;
End;

//-----------------------------------------------------------------------

Function ServiceGetStatus(sMachine, sService: PChar): DWORD;
Var
SCManHandle, SvcHandle: SC_Handle;
SS: TServiceStatus;
dwStat: DWORD;
Begin
dwStat := 0;
SCManHandle := OpenSCManager(sMachine, Nil, SC_MANAGER_CONNECT);
If (SCManHandle > 0) Then
Begin
SvcHandle := OpenService(SCManHandle, sService, SERVICE_QUERY_STATUS);
If (SvcHandle > 0) Then
Begin
If (QueryServiceStatus(SvcHandle, SS)) Then
dwStat := ss.dwCurrentState;
CloseServiceHandle(SvcHandle);
End;
CloseServiceHandle(SCManHandle);
End;
Result := dwStat;
End;

//-----------------------------------------------------------------------

Function ServiceRunning(sMachine, sService: PChar): Boolean;
Begin
Result := SERVICE_RUNNING = ServiceGetStatus(sMachine, sService);
End;

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar