Results 1 to 8 of 8

Thread: Programma ook als service gebruiken.

  1. #1

    Programma ook als service gebruiken.

    Ik wil mijn huidig programma ook als service gebruiken. Nu heb ik al wel voorbeelden gevonden op internet om dit te doen oa. op https://stackoverflow.com/questions/...s-it-necessary

    Bij alle voorbeelden wordt de dpr aangepast. Dat begrijp ik nog wel. Maar in de rest van de code zal ook iets aangepast moeten worden. Hoe geeft ik bijv. aan als de service start mijn programma gestart moet worden. Ik zie even niet hoe dit gedaan kan worden. En kan zo nergens een compleet voorbeeldje vinden.

    Iemand enig idee.
    Niets is zo gemakkelijk als het lijkt.

  2. #2
    Fornicatorus Formicidae VideoRipper's Avatar
    Join Date
    Mar 2005
    Location
    Vicus Saltus Orientalem
    Posts
    5,530
    Je kunt niet zomaar van ieder programma/project een service maken: kort gezegd kun je alleen "Business logic" in een service zetten; alles wat interactie nodig heeft is taboe (dit geldt dus ook voor het opstarten van andere programma's).

    Meestal start ik eenvoudig: ik begin met een normale VCL applicatie (File -> New -> Windwos VCL application) met een paar knoppen en een TMemo op de main form.
    Deze verwijzen naar een TDataModule waarin alles zit dat mijn service uiteindelijk moet doen; op deze manier kan ik eenvoudig testen of mijn code werkt.
    Als ik tevreden ben (voor een eerste service test), dan maak ik een nieuwe service (File -> New -> Other -> Delphi -> Windows -> Windows Service) en stop de DataModule uit mijn test-applicatie in de uses.
    Vervolgens start ik mijn code in de datamodule in de OnStart-event van de service (standaard is dat Unit1) en als ik de service wordt gestopt reageer ik op de OnStop-event.

    De benodigde instellingen voor de service kun aangeven in de properties van de service:
    Click image for larger version. 

Name:	ServiceProperties.png 
Views:	9 
Size:	14.5 KB 
ID:	8152

    Voordat je een service kunt gebruiken moet je hem installeren met de "/INSTALL" command-line parameter; de-installeren kan met "/UNINSTALL".

    Je kunt met een service "In beginsel" dus niet zomaar een (jouw) externe applicatie starten; ik moet ook zeggen dat ik mij geen situatie kan herinneren of voorstellen dat iemand dat zou willen.
    Als je met je vraag iets anders bedoeld of het niet duidelijk is: laat het horen.
    TMemoryLeak.Create(Nil);

  3. #3
    Quote Originally Posted by Greta View Post
    Ik wil mijn huidig programma ook als service gebruiken.
    Wat voor soort programma is het. Heeft het forms en user-interacties? Waarom wil je het dus service starten? Wellicht zijn er andere mogelijkheden zoals scheduled task met parameter o.i.d..

  4. #4
    Ik start nu mijn programma als service met behulp van een extern programma. En dat werkt verder prima. Maar heb dus wel weer extra software nodig van derden. Het lijkt mij daarom gemakkelijker om dit in dezelfde exe te bouwen. Alleen zie ik zo even niet hoe ik vanuit de service de FormCreate kan uitvoeren om mijn programma te starten.
    Niets is zo gemakkelijk als het lijkt.

  5. #5
    Fornicatorus Formicidae VideoRipper's Avatar
    Join Date
    Mar 2005
    Location
    Vicus Saltus Orientalem
    Posts
    5,530
    Quote Originally Posted by Greta View Post
    hoe ik vanuit de service de FormCreate kan uitvoeren
    Uhm nee, dat kan ook niet: een service heeft geen forms (dat is tenslotte VCL).

    Maar zoals Rik al zei: wat voor soort programma is het en wat heb je voor ogen?
    TMemoryLeak.Create(Nil);

  6. #6

  7. #7
    Voor het maken van services gebruik ik altijd SvCom. Hiermee kun je o.a. de service makkelijk starten, stoppen en debuggen vanuit de IDE.

    Je zou het ook kunnen overwegen om van je applicatie een tray applicatie te maken en deze automatisch te laten starten als Windows start.

  8. #8
    Het is een programma die metingen doet en deze toont op het scherm en verstuurd. Verder zijn er geen user-interacties. Nu gebruik ik een programma om een service te installeren die vervolgens mijn programma start. En dat werkt zonder problemen.
    Nu was mijn idee om deze server functionaliteit aan mijn programma toe te voegen en vervolgens FormCreate uitvoeren om mijn programma te starten, net zoals ik nu eigenlijk doe met het externe programma, zodat mijn programma start (natuurlijk zonder UI).

    Ik hou het dan maar zoals ik het nu heb.
    Niets is zo gemakkelijk als het lijkt.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •