Service beendet sich nach 5sek selbst

In der MSDN.
Is aber etwas kompliziert...
Ich geb dir mal ein Grundgerüst, nähere Infos zu den Funktionen bitte wirklich aus der MSDN holen.


Code:
VOID WINAPI MeineErsteServiceMain(DWORD,char**);

int WINAPI WinMain(HINSTANCE,HINSTANCE,char*cmdl,int){
	SERVICE_TABLE_ENTRY ste[2];
	ste[0].lpServiceProc = MeineErsteServiceMain;
	// ste nach deinen Wünschen initialisieren. der letzte (also der erste unbenutze) Eintrag muss komplett 0 sein
	StartServiceCtrlDispatcher(ste);	//service-dispatcher starten
	//diese fkt setzt sich mit dem betriebssystem in verbindung.
	//falls jetzt irgendwelche service aus deinem ste-table gestartet werden sollen, startet die das betriebssystem einfach
	//dein prozess bleibt in der fkt hängen, solange mindestens einer der service noch läuft
}

SERVICE_STATUS_HANDLE ssh;
SERVICE_STATUS ss;

VOID WINAPI servicehandler(DWORD cmd){
	if((cmd==SERVICE_CONTROL_STOP||cmd==SERVICE_CONTROL_SHUTDOWN)&&ss.dwCurrentState!=SERVICE_STOPPED){
		//hier solltest du prozesskommunikation einfügen,
		//damit du in deiner service-main weisst, dass du beenden sollst
		ss.dwCurrentState=SERVICE_STOP_PENDING;
	}
	//sonstige commands evtl abfangen
	SetServiceStatus(ssh,&ss);
}

VOID WINAPI MeineErsteServiceMain(DWORD service_argc,char**service_argv){
	//hier solltest du ss nach deinen wünschen initialisieren

	ss.dwCurrentState=SERVICE_START_PENDING;
	ssh=RegisterServiceCtrlHandler(service_argv[0],servicehandler);
	SetServiceStatus(ssh,&ss);

	//hier den service initialisieren

	ss.dwCurrentState=SERVICE_RUNNING;
	SetServiceStatus(ssh,&ss);

	//hier mit dem service arbeiten

	//sobald service beendet werden soll, wird hier weitergemacht

	ss.dwCurrentState=SERVICE_STOPPED;
	SetServiceStatus(ssh,&ss);
}
 
Zuletzt bearbeitet:
Endurion hat gesagt.:
Services dürfen glaube ich keine Fenster aufmachen

Wenn du bei den Service-Einstellungen SERVICE_INTERACTIVE_PROCESS angibst, darf er das schon soweit ich weiss.


PS:
und zum Service-Installieren nimmt man die WinApi-Funktion CreateService, für alle, die es interessiert.
 

Neue Beiträge

Zurück