Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Advanced Developers Conference     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: MFC (Visual C++) ::  Service und Tray Icon     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
Sönke
Mitglied

Benutzerprofil
Anmeldungsdatum: 25.08.2010
Beiträge: 10
Beitrag Sönke Mitglied 23:44:23 25.08.2010   Titel:   Service und Tray Icon            Zitieren

Hallo - ich habe einen Service geschrieben, der über den Tray Icon bedienbar ist.
Das funktioniert soweit auch ganz prima :) - bis auf :

Wenn das System hochfährt und der Service automatisch startet erscheint das Tray Icon nicht ...
ebenso wenn ein User sich abmeldet und sich wieder neu anmeldet. :( :-(

Mein Service benötigt also eine Mitteilung vom System wenn sich ein User angemeldet hat. ( Dann kann ich den Tray Icon / Dialog erstellen und dann wird's auch klappen)
Welche Klassen bzw. Messages oder Systemmiteilungen könnten mir da hilfreich sein ?
Hat da jemand eine Idee ?? :confused:

thx
Sönke
While(true){}
Mitglied

Benutzerprofil
Anmeldungsdatum: 07.01.2010
Beiträge: 97
Beitrag While(true){} Mitglied 22:22:49 28.08.2010   Titel:              Zitieren

Hallo,

ein Service wird vom System nicht wie ein normales Programm behandelt.
Die gesamte GUI landet auf einer anderen Window Station, die von Ein- und Ausgabegeräten abgeschottet ist, sodass deine GUI nicht so ohne weiteres sichtbar wird.
Unter XP konnte man da noch tricksen und den Services auf die "normale" Window Station holen, aber ab Windows 6 ist dies (fast) unmöglich.

Gruß
Fabian


Zuletzt bearbeitet von While(true){} am 22:24:03 28.08.2010, insgesamt 2-mal bearbeitet
2progs
Unregistrierter




Beitrag 2progs Unregistrierter 03:22:49 29.08.2010   Titel:              Zitieren

du musst das auftrennen: Service + User-Programm
Sönke
Mitglied

Benutzerprofil
Anmeldungsdatum: 25.08.2010
Beiträge: 10
Beitrag Sönke Mitglied 10:10:09 29.08.2010   Titel:              Zitieren

Hallo Jungs !!! :warning:

Ich bin duraus in der Lage ein Tray Icon (incl. Dialog) zu erstellen.
Alle diese Tricks sind mir durchaus bewußt. :live:

Hier geht's es nur um eben oben beschriebenes :

Ihr startet windows - bis zum Login -> dann loggt Ihr euch ein !
Eurer Service läuft dort bereits .. Soweit logisch ?
Was dann fehlt ist der Dialog/TrayIcon - warum :confused: ??
Na klar - der Service ist natürlich schon viel früher durchgestartet als das restliche Windowssystem welches ja erst durch den Login vollständig gestartet wird. :)
Dann könntet Ihr den Service stoppen und wieder starten ->
Voila ! schon klappt's mit service/TrayIcon. :D

So sollte es aber natürlich nicht funktionieren. :(
Nach dem Einloggen sollte das TrayIcon natürlich wie all die anderen dort befindlichen Tray Icon's auftauchen - nur der Service ist halt kein Autostart-prg und einen Zusatz in den Run - Eintrag in der Registry wollte ich auch nicht vornehmen. - gewünscht ist -ich muß wissen wie ich erkenne das ein User sich gerade angemeldet hat oder wie erkenne ich das Windows komplett hochgefahren wurde/ist. Darüber kann ich dann den Tray/Icon /Dialog später instanzieren und dann klappt's auch mit dem Nachbarn. :o)

Irgendeine Idee ?
foodax
Mitglied

Benutzerprofil
Anmeldungsdatum: 30.10.2006
Beiträge: 179
Beitrag foodax Mitglied 06:14:21 30.08.2010   Titel:              Zitieren

Hallo,
Sönke schrieb:

Irgendeine Idee ?

So wie bereits oben empfohlen. Du hast den Windowsdienst der unabhängig von dem Benutzerlogin und vor allem Deiner Konfigurations-GUI läuft. Dazu eine Helperapplikation die sich mit dem Dienst verbindet und im Autostart/Registry der Benutzerprofile liegen.

Wenn Du das von der Anmeldung abhängig machen willst, wirst Du bei Terminalservices evtl. ein Problem haben.

Gruß
foodax
Elgerton
Mitglied

Benutzerprofil
Anmeldungsdatum: 02.01.2009
Beiträge: 15
Beitrag Elgerton Mitglied 12:58:17 30.08.2010   Titel:              Zitieren

So wie ich Dich verstehe startet Dein Dienst dieses TrayIcon-Programm. Richtig? Das ist schon aus dem Grund nicht gut, da dieses dann mit den Rechten des Dienstes läuft, die meist höher sind, als die User-Rechte.

Warum eigentlich kein Run-Eintrag? Dein Programm kann doch dann selbst checken, ob der Dienst läuft oder nicht und sich anzeigen oder nicht!?


Zuletzt bearbeitet von Elgerton am 13:00:29 30.08.2010, insgesamt 1-mal bearbeitet
Sönke
Mitglied

Benutzerprofil
Anmeldungsdatum: 25.08.2010
Beiträge: 10
Beitrag Sönke Mitglied 21:55:06 30.08.2010   Titel:              Zitieren

Gut, ich muß gestehen die Möglichkeit gibt's - ich hatte halt mehr an de Variante VNC (Remote Administration etc.) gedacht.
Hier taucht das VNC-Server Icon auch ohne Run Eintrag auf.

Hierbei benötige ich halt nur eine Exe und das Projekt bleibt noch überschaubar.

Meine Applikation benötigt ebenfalls entsprechende Rechte - also kein Problem - der aktuelle User muß entsprechend eingreifen können.(Er hat sowieso nur die Rechte die ich Ihm gebe.)

Wenn Ihr sonst keine weiteren Ideen habt - probiere ich mal die Run-Variante aus - zusätzlich forste ich mal den Open-Source von VNC durch - mal schauen ob ich da was passendes finde....
hustbaer
Mitglied

Benutzerprofil
Anmeldungsdatum: 27.10.2006
Beiträge: 12748
Beitrag hustbaer Mitglied 23:13:48 30.08.2010   Titel:              Zitieren

Zitat:
Hier taucht das VNC-Server Icon auch ohne Run Eintrag auf.

Bist du sicher?

Davon abgesehen...

Wenn man sicher sein kann, dass das Service mit Admin-/System-Rechten läuft, kann es leicht sein, dass es ohne "Run Eintrag" für die Tray-Helper-Applikation geht.

Du kannst ja z.B. alle paar Sekunden die Window-Stations und/oder Desktops enumerieren, und gucken ob was neues dazugekommen ist. Oder noch ein wenig weiter suchen ob es einen passenden Event oder eine Window-Message gibt, der/die das Entstehen eines neuen Desktops verkündet.

Wenn du dann einen neuen Desktop gefunden hat, machst du ihn auf, und zeigst dort ein Tray-Icon an.

Entweder indem du einen neuen Thread rausstartest, und dann den "Current Desktop" dieses Threads änderst, oder (besser) indem du selbst die Helper-Applikation auf diesem Desktop rausstartest (was auch ohne Weiteres die Service .exe selbst sein kann - kannst ja einen Command-Line Parameter "-trayhelper" oder so verwenden).

----

Eine eigene Tray-Helper Applikation zu verwenden ist soweit ich weiss die "Standard" Variante wie man sowas macht. Und bei Services die ohne Admin-/System-Rechte laufen müssen, wird es auch ziemlich sicher über einen Run-Eintrag gemacht, denn das Service hätte gar nicht die nötigen Rechte um auf einem fremden Desktop irgendwas zu machen.

_________________
"Let there be Licht..." http://lichttools.sourceforge.net/
Sehr cooles ASCII Spiel (leider nicht von mir): ASCII-Scramble - http://www.roskakori.at/ascii/


Zuletzt bearbeitet von hustbaer am 23:17:37 30.08.2010, insgesamt 1-mal bearbeitet
Sönke
Mitglied

Benutzerprofil
Anmeldungsdatum: 25.08.2010
Beiträge: 10
Beitrag Sönke Mitglied 21:42:58 01.09.2010   Titel:              Zitieren

Da muß ich jetzt ein wenig passen. Welche WM /Event wird denn geworfen wenn ein neues Desktop eröffnet wird ?? (hab in den MSDN's keine passende gefunden :confused: )

Wie meinst du das mir Stations/Desktop enumerieren :confused:

Also wenn ich die Parameter geklärt habe krieg ich das wohl auch hin ....
C/C++ Forum :: MFC (Visual C++) ::  Service und Tray Icon   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.