1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
| procedure TAAAservice.ServiceCreate(Sender: TObject);
var
S : LongBool ;
T : Cardinal ;
Srv_Hwnd : SC_Handle;
Srv_CtrlMngr: SC_Handle;
Srv_State : TServiceStatus;
//voir etat de service
EtatDuService : word;
//voir démarer service
ArrayOfArguments : PChar;
begin
while not terminated do
begin
//////////////////////
//connection SCM windows
Srv_CtrlMngr := OpenSCManager(nil,nil, SC_MANAGER_ALL_ACCESS);
showmessage('connection au base SCM windows : '+inttostr(Srv_CtrlMngr));//cette fonction renvoi un nombre différent de 0 donc elle est juste
///////////////////
//Creation de service en base de SCM windows ( ensuite on va faire un test avant lui si le service existe
(*)T:=CreateService(Srv_Ctrlmngr,PChar('AAAservice'),PChar('AAAservice'),SC_MANAGER_ALL_ACCESS,SERVICE_WIN32_OWN_PROCESS,SERVICE_AUTO_START,SERVICE_ERROR_IGNORE,PChar( 'C:\Program Files\Borland\Delphi7\Projects\anisservice1\project1.exe'),nil,nil,nil,nil,nil);
if T>0 then
showmessage('service crée')
else
showmessage('service existe ou bien un autre erreur'); (*)
////////////////////////
//ouvrir le service
Srv_Hwnd := OpenService(Srv_CtrlMngr, PChar('AAAservice'),SERVICE_ALL_ACCESS );
showmessage('ouvertur d''un service : '+inttostr(Srv_Hwnd)) ;//si ca affiche un 0 donc pas juste
//////////////////////
//demarer le service
ArrayOfArguments:=nil;
if StartService(Srv_Hwnd ,0,ArrayOfArguments)then
showmessage (' démarage de service avec succe ')
else
showmessage (' erreur est survenu en démarage de service');
//fin de démarage
//////////////////////
// etat de service
QueryServiceStatus(Srv_Hwnd, Srv_State);
EtatDuService:=Srv_State.dwCurrentState;
case EtatDuService of
SERVICE_CONTINUE_PENDING : showmessage('1');
SERVICE_PAUSE_PENDING : showmessage('le service est en train d''être relancé après une opération pause');
SERVICE_PAUSED : showmessage('Le service est en pause');
SERVICE_RUNNING : showmessage('Le service est démarré ');
SERVICE_START_PENDING : showmessage('Le service est en cours de démarrage');
SERVICE_STOP_PENDING : showmessage('Le service est en cours d''arrêt');
SERVICE_STOPPED: showmessage('Le service est stoppé');
else
showmessage('Etat du service ne retourne rien');
end;
//fin d'etat de service
////////////////////
//fermer les handle
CloseServiceHandle(Srv_Hwnd);
CloseServiceHandle(Srv_CtrlMngr);
AAAservice.Free;
end ;
end; |
Partager