[Delphi] Service automatisch starten na installatie

Pagina: 1
Acties:

  • KillR-B
  • Registratie: Mei 2002
  • Laatst online: 20-01 20:49
Ik ben een tijdje bezig om een service te maken in Delphi 7 onder Windows XP. Zo'n service kun je installeren door het op te starten met "bestand.exe /install". Vervolgens wordt de service netjes tussen alle andere services gezet alleen wordt deze pas bij het opstarten van Windows pas uitgevoerd en dus niet direct bij de installatie.

Nu vraag ik me af of het mogelijk is om de service direct na de installatie te runnen? Ik heb het al geprobeerd op de volgende manier, maar dat mocht niet baten:

Delphi:
1
2
3
4
5
procedure TEenWillekeurigeService.ServiceAfterInstall(Sender: TService);
begin
  Sender.Status := csRunning;
  Sender.ReportStatus;
end;

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Ja, dat kan. Je kan de Service Control Manager daar opdracht toe geven. Kijk even naar de SCM API.

We adore chaos because we like to restore order - M.C. Escher


  • KillR-B
  • Registratie: Mei 2002
  • Laatst online: 20-01 20:49
Thanx ik heb idd eens in deze API gekeken en kwam dit artikel tegen:
http://groups.google.com/...3c7026bf_1%40dnews&rnum=2

Ik heb het nu zo werkend gekregen (je moet dan wel de unit WinSvc includen):
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TEenWillekeurigeService.ServiceAfterInstall(Sender: TService);
var
  Scm: SC_HANDLE;
  Svc: SC_HANDLE;
  P: LPCTSTR;
begin
  Scm := OpenSCManager(nil, SERVICES_ACTIVE_DATABASE, SC_MANAGER_ALL_ACCESS);
  Svc := OpenService(Scm, 'HierDeServiceNaam', SERVICE_ALL_ACCESS);
  P := nil;
  StartService(Svc, 0, P);
  CloseServiceHandle(Svc);
  CloseServiceHandle(Scm);
end;