Beispiel zu einem Dienst ?



  • Hallo,

    ich versuche schon eine ganze Weile einen Dienst zu Programmieren.
    Er soll alle 20 sec. in einem Verzeichnis nachschauen, ob sich dort Dateien
    befinden und ggf. diese Ausdrucken und dann löschen.

    Ich habe ein TService Project erstellt, und dort meine Funktionen eingebaut,
    soweit so gut. Compiliert wird alles ohne Probleme, den Service kann ich
    Installieren und Starten uns Anhalten etc.

    Doch er tut nichts.
    Jedoch werde ich aus der Online-Hilfe nicht so richtig schlau.

    a) in welchen Fuktionen / Events muß ich die "Suche nach dateien"-Funktion einbauen ?

    b) Noch eine andere Frage hierzu, in einer Normalen *.Exe gibt es Application->ExeName, gibt es soetwas nicht unter TServiceApplication ?

    c) hat jemand vieleicht ein kleines Demo-Project zum Anschauen ?

    in hope for Help 🙂

    Mario



  • Das Beispiel in der Hilfe unter "Using TService" kennst du?
    Wegen des Exe-Pfades siehe QueryServiceConfig().
    In Zukunft aber bitte die Faustregel beachten: ein Thema pro Thread, ein Thread pro Thema.



  • Hallo,

    Ich habe mich auch gerade mit diesem Thema rumgeaergert 😉 . Ich habe auch das Beispiel aus der Hilfe genommen und erst mal so abgewandelt, dass der Dienst alle 20 Seunden etwas in einen Textfile schreibt. Das geht jetzt auch ganz gut ...

    Ich habe in dem Beispiel noch eine Timerkomponente hinzugefügt und den Quellcode ein wenig angepasst...

    #include <stdio.h>

    void __fastcall TMyService::Timer1Timer(TObject *Sender)
    {
    FILE *stream;

    stream = fopen("c:\\myservice_log.txt", "a+");
    fprintf(stream, "My_Service_Log \n");
    fclose(stream);

    }
    //---------------------------------------------------------------------------

    void __fastcall TMyService::ServiceExecute(TService *Sender)
    {
    Timer1->Enabled=true;
    ServiceThread->ProcessRequests(true);

    }

    Vielleicht hilts ja,

    k6_2



  • Siehe auch auf meiner Seite unter BC++Builder->Tips und Tricks->NT-Dienst programmieren



  • F98 schrieb:

    Siehe auch auf meiner Seite unter BC++Builder->Tips und Tricks->NT-Dienst programmieren

    Hallo F98,
    könntest du bitte folgendes näher erläutern?

    Verknüpfung auf die Dienste-EXE mit /install hinter dem *.exe erstellen.

    danke!



  • das soll heißen deinedatei.exe /INSTALL 😉
    P.S. und das angeben in deiner Verknüpfung auf die Dienst-Exe



  • danke, @PuppetMaster2k!

    PuppetMaster2k schrieb:

    das soll heißen deinedatei.exe /INSTALL 😉

    Ok. Von der Kommandozeile aus: programm.exe /install ->funktioniert

    Aber:

    PuppetMaster2k schrieb:

    P.S. und das angeben in deiner Verknüpfung auf die Dienst-Exe

    Verknüpfung auf die Dienst-Exe? 😕



  • Das ist zwar jetzt OT, aber nagut. Wenn du eine Verknüpfung zu deiner Dienst-Exe erstellst, dann auf Eigenschaften und da unter Ziel "DeineExe.exe /install" angeben und schon kannst du da Ganze per Verknüpfung ausführen.



  • alles klar, danke dir!


Anmelden zum Antworten