AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi VCL Anwendung aus Windowsdienst starten

VCL Anwendung aus Windowsdienst starten

Ein Thema von Neutral General · begonnen am 10. Okt 2019 · letzter Beitrag vom 10. Okt 2019
Antwort Antwort
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.068 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

VCL Anwendung aus Windowsdienst starten

  Alt 10. Okt 2019, 13:19
Hallo,

Ich habe einen in Delphi geschriebenen Windowsdienst. Dieser läuft unter dem SYSTEM-Benutzer.
Eine der (Neben-)Aufgaben des Dienstes ist u.a. PDFs zu erzeugen bzw. bereitzustellen.
Zur Erzeugung der PDFs soll/muss FastReport genutzt werden.
Das Problem ist jetzt das FastReport ohne VCL bzw. Window Handles nicht auskommt und meines Wissens haben Window Handles in einem Windowsdienst nichts zu suchen, bzw. führen auch zu Fehlern.
Das bedeutet letztendlich dass ich die PDF im Dienst selbst dummerweise nicht erzeugen kann.

Mein Plan war jetzt eine VCL-Anwendung zu schreiben die vom Dienst gestartet wird und die mit dem Dienst per TCP kommuniziert und für den Dienst die PDFs erstellt.
Der Dienst holt sich dann die von der VCL-Anwendung erstellten PDFs einfach ab.
Das ganze funktioniert ganz gut wenn der Dienst nicht als Dienst sondern als Konsolenanwendung läuft (unter dem aktuell angemeldeten Benutzer).
Als Windowsdienst klappt das Ganze aber irgendwie nicht ganz.

Ist das überhaupt erlaubt, bzw. kann das überhaupt funktionieren ein VCL-Programm von einem SYSTEM-Dienst starten zu lassen?
Das Hilfsprogramm startet, aber nachdem es per TCP den Befehl zum Erstellen der PDF erhält hängt es sich auf.

Ich hoffe die Informationen reichen aus damit jemand vielleicht was dazu sagen kann.
Was ich bräuchte ist ein Hinweis/Erklärung warum das möglicherweise nicht klappt bzw. klappen kann oder/und welche Alternative mir bleibt die PDF zu erstellen.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
802 Beiträge
 
Delphi 6 Professional
 
#2

AW: VCL Anwendung aus Windowsdienst starten

  Alt 10. Okt 2019, 13:51
Hmm..

mit ein paar Tricks ist es möglich einen Dienst zu schreiben, welcher auf das Login von Windows reagiert und dann mit dessen User-Anmeldung in dessen Session eine Applikation zu starten.

Gerade mal auf Win10 getestet und funktioniert auch dort noch, hatte vorher nur mit Win7 verwendet.

Bedenke aber, dass sich an Windows über 'Benutzer wechseln' mehrere User gleichzeitig anmelden können und dann eventuell in jeder Session dein VCL-Tool gestartet wird.


Ob Dir das hilft weiß ich nicht, da du ja bereits das Starten deiner VCL-Anwendung ja bereits gemacht hast.

Woher kommen denn die Daten für das PDF?
Läuft die Anwendung (PDF-Erzeugung) auch im Kontext des Users?
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
2.176 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#3

AW: VCL Anwendung aus Windowsdienst starten

  Alt 10. Okt 2019, 14:50
Klingt ein bisschen so, als ob der Teil von FastReport in der User Session laufen muss und das daher in Session 0, wo dein Dienst läuft, nicht funktioniert.

Was ähnliches ist mir neulich beim Einrichten von Jenkins passiert.
Ging ewig nicht, musste dann den Dienst in meinen User-Account laufen lassen (siehe Spalte "Anmelden als" in services.msc).

Hintergrund-Informationen:
https://brianbondy.com/blog/100/unde...s-and-desktops


Probiere doch mal diesen Codeschnipsel aus:
http://thundaxsoftware.blogspot.com/...er-active.html
  Mit Zitat antworten Zitat
Benutzerbild von FBrust
FBrust

Registriert seit: 4. Okt 2002
Ort: Saarbrücken
643 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: VCL Anwendung aus Windowsdienst starten

  Alt 10. Okt 2019, 16:29
Hallo,

ich habe seit Jahren einen Dienst laufen, der mit FastReport PDFs erzeugt. Der Dienst wurde mit Delphi 2010 und FastReport 4 erstellt (die Umstellung auf D10 und FastReport 6 steht noch aus).

Der Dienst hat seinerzeit ein Datenmodul-Formular bekommen, auf dem der frxReport1 und ein frxDBDataset liegen. Ich glaub, der Grund war, dass die Komponente frxReport1 nicht zur Laufzeit erzeugt werden konnte.

In der Main-Unit sind frxClass, frxExportPDF und frxDBSet eingebunden. Der PDFExport wird dann zur Laufzeit erzeugt.


Ich hoffe, das hilft Dir weiter.

Gruß
Frank
"Ich habe Dinge gesehen, die ihr Menschen niemals glauben würdet. Gigantische Schiffe, die brannten, draußen vor der Schulter des Orion" - Roy Batty
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.068 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: VCL Anwendung aus Windowsdienst starten

  Alt 10. Okt 2019, 16:36
Wie es aussieht hat es sich aufgelöst...
Der Dienst (bzw. die Helper.exe) sollte auf Daten auf einem Netzlaufwerk zugreifen, das natürlich für den Systembenutzer nicht gemappt war.
Ansonsten scheint es jetzt dann erst mal doch zu laufen.

Danke aber trotzdem für eure Mühe!
Sind trotzdem interessante Links wo das Durchlesen sicher nicht schadet
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf