Autor Beitrag
dirksen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23

Win 7, Win 8, Win 2012 Server R2
Delphi 7, Delphi XE2, VS 2008
BeitragVerfasst: Di 14.02.17 10:02 
Hallo zusammen,

ich hab hier meine Anwendung, die Messdaten aufzeichnet. Diese soll auf einem Server laufen und bei Systemstart automatisch, ohne Benutzeranmeldung starten. Also im Prinzip wie ein Dienst funktionieren. Leider ist es im Moment nicht möglich in kurzer Zeit die Anwendung auf einen Dienst umzuschreiben.
Den Start bei Systemstart bekomme ich über die Aufgabenplanung soweit hin, das Programm wird unter einem Benutzerkonto gestartet und läuft dann nach Systemstart als Hintergrundprozess und zeichnet ganz normal auf. Das Problem ist, wenn jetzt irgendwelche Einstellungen geändert werden sollen muss ich an die Dialoge des Programms ran, was nicht geht, da es als Hintergrundprozess läuft. Gibt es eine Möglichkeit das Programm sichtbar zu machen un in den Vordergrund zu bringen, ohne es zu beenden? Z.B. ich starte das Programm ganz normal per Doppelklick neu, erkenne, dass es schon läuft und sende dann eine Message an den Hintergrundprozess? Ich dachte da an SetThreadDesktop, hiermit dann der laufenden Application einen neuen Desktop zuweisen. In die Richtung versuche ich gerade erste Experimente. Oder kennt jemand da eine andere Lösung?

Bin gespannt auf Eure antworten....
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2162
Erhaltene Danke: 399

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Di 14.02.17 11:51 
Guten Tag dirksen,

wie wäre es mit

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
var
  wnd: THandle;
begin
  wnd := FindWindow('Fenster-Klassenname''Fenster-Titelbeschreibung');
  if wnd <> 0 then
    ShowWindow(wnd, SW_SHOW); //SW_SHOWMINIMIZED, SW_SHOWMAXIMIZED
end;

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)
dirksen Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23

Win 7, Win 8, Win 2012 Server R2
Delphi 7, Delphi XE2, VS 2008
BeitragVerfasst: Di 14.02.17 12:44 
Hallo Frühlingsrolle,

geht leider so nicht, das Fenster wird nicht gefunden.
Der Prozess wird zu einem Zeitpunkt gestartet, an dem kein Benutzer angemeldet ist und somit kein Desktop zur Verfügung steht.
Im MS Spy++ finde ich bestenfalls den Prozess, aber keine Fenster. Wenn ich mir das Programm im Taskmanager anschaue, existieren auch keine GDI-Handles.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 18685
Erhaltene Danke: 1618

W10 x64 (Chrome, IE11)
Delphi 10.2 Ent, Oxygene, C# (VS 2015), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 14.02.17 13:06 
Der normale Weg (auch für einen Dienst) wäre schlicht einen kleinen Webserver anzubieten, der dann auch eine Statusseite, Konfigurationsseite usw. anbietet.

Es gibt mit uniGUI auch eine Möglichkeit VCL Formulare relativ gut in Webseiten umzuwandeln. Nicht im Sinne von direkt konvertieren, aber mit deutlich weniger Aufwand als normalerweise nötig wäre:
www.unigui.com/
Vielleicht wäre das ja für die Umstellung auf einen Dienst hilfreich?

_________________
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!