himbidas 10 Geschrieben 28. November 2003 Melden Teilen Geschrieben 28. November 2003 Hallo meine Genies bevor mich jemand ob meiner Frage steinigen will, wie hier http://www.mcseboard.de/showthread.php?s=&threadid=18808&perpage=10&pagenumber=2 , ist alles legitim und absolutly sauber :) Folgendes Szenario: WinNT-Client, bedient mittels GUI-Progrämmchen eine Tankstellen-Zapfsäule per serieller Schnittstelle. Damit die Tankerei klappt, muss sich ein User anmelden. Durch einen Autostarteintrag startet das zugehörige Programm (exe) und liegt als grafisches Fenster auf dem Desktop. Eigentlich hat der User weiter nix zu tun, als ab und zu mal reinzusehen und ggf. gesperrte Zapfsäulen mit einem Klick auf einen Button wieder zu entsperren. Ich muss aber gewährleisten, dass die Tankerei auch funzt, wenn keiner angemeldet ist. Hab also bereits versucht, das ganze als Dienst per instsvr.exe reinzubasteln. No chance :( Gibt es eine andere Lösung, auch wenn meine Angaben nicht grad sehr ausführlich sind? Die Firma, die das Teil an uns verkauft hat ist jedenfalls nicht in der Lage das Problem zu lösen, leider... Thomas Zitieren Link zu diesem Kommentar
auer 10 Geschrieben 28. November 2003 Melden Teilen Geschrieben 28. November 2003 Ich vermute, daß das nicht geht. Und zwar einfach deshalb, weil es ein GUI-Programm ist, ein Dienst jedoch keinerlei Userinterface haben darf. Das heißt, ein Programm mit GUI ruft gewisse Windows-Funktionen auf, um ein Fenster zu erzeugen und startet dann einen Thread, der auf Benutzereingaben und Mausklicks in einer Dauerschleife wartet. Das als Dienst laufen zu lassen kann nicht funktionieren. Da müßte die herstellende Firma zwei Komponenten bereitstellen: Den eigentlichen Dienst, der bsp. nur Statusmeldungen zurückliefert und ein Konsolen- oder graphisches Programm, das diese entgegennimmt, anzeigt und auf Klick oder Tastendruck entsperrt. Ansonsten: No chance. ----------- Gruß, Auer Zitieren Link zu diesem Kommentar
himbidas 10 Geschrieben 28. November 2003 Autor Melden Teilen Geschrieben 28. November 2003 *grummel* *mmpf* Wenn ich das Teil über instsvr.exe als Dienst einrichte, kann ich in der Diensteverwaltung noch anklicksen "Interaktion mit Desktop erlauben". Also müsste es doch prinzipiell auch Dienste geben, die als GUI's laufen. Oder bin ich da auf dem Holzweg? Thomas Zitieren Link zu diesem Kommentar
auer 10 Geschrieben 30. November 2003 Melden Teilen Geschrieben 30. November 2003 Der Haken in der Dienstverwaltung nutzt nichts, wenn das Ding nicht entsprechend programmiert ist. Und einen Dienst 'bloß als Dienst' zu programmieren oder ihn zusätzlich mit einer GUI zu versehen, ist ein ziemlicher Unterschied. Skizziert: Normaler Dienst -> Exe ohne GUI, eine wartende Dauerschleife, Arbeitsthread, Fehler ins EventLog, Instanz bricht ab, falls Aufruf interaktiv. Dienst mit GUI: Alles von oben. Zusätzlich muß bsp. beim Start der interaktiven Instanz geprüft werden, ob der Dienst läuft, falls ja, muß ständig mit diesem kommuniziert werden, Fehlermeldungen zum Nutzer. Interprozeßkommunikation (3) ist etwas 'ganz anderes' als die noch einfachere Multithreadkommunikation (2) innerhalb eines Prozesses, dies wiederum ist komplizierter als das übliche lineare Programmieren (1). Alternative: GUI-Instanz merkt, daß Dienst läuft, signalisiert diesem etwas, beendet sich, Dienst startet zusätzlichen Thread, der Nutzermaske anzeigt. Beim Abmelden darf nur dieser Teil beendet werden, ohne Speicherlecks zu produzieren, der normale Dienst muß weiterlaufen. Sprich: Drastischer Unterschied im Aufwand, der Haken funktioniert nur dann, wenn der Rest schon gemacht ist. ------------- Gruß, Auer Zitieren Link zu diesem Kommentar
himbidas 10 Geschrieben 30. November 2003 Autor Melden Teilen Geschrieben 30. November 2003 ach manno auer... dass du einem aber auch mit solchen harten Fakten sämtliche Hoffnungen zerstören kannst ;) Dann begrabe ich das also erstmal und hoffe darauf, dass die Firma das endlich in die Reihe bekommt. Danke trotzdem Thomas Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.