Dienst-Programmierung mit ner MessageBox?



  • lippoliv schrieb:

    Brauche ich auch diese WndProc function?

    Ja, genau darum dreht sich ja auch das "nid.uCallbackMessage". Eben diese Nachricht bekommst du dann bei Events zugeschickt 😉



  • Danke. Werds mal versuchen, wenn ich dann mal wieder Zeit habe.
    Spätestens im Januar.



  • Hey nochmal,
    ich bleibe beim Dienst,

    aber wie es aussieht, ist es wohl UNMÖGLICH aus einem Dienst ein Fenster anzuzeigen,
    selbst wenn man über CreateProcess einen neuen Prozess erstellt oder wie sehe ich dass?



  • Hättest du dich nur ein wenig mit der Materie beschäftigt, wüsstest du dass es unter Vista keine interaktiven Dienste mehr gibt. MB_SERVICE_NOTIFICATION als Flag für die Messagebox noch funktioniert, musst du mal probieren.



  • Wie oft habe ich diesen Satz schon gehört, verstanden und trotzdem im Hintergedanken gehabt "Es währe schwachsinn wenn es eine 0%ige Chance gäbe"...

    Dienste währen dann sowas von wenig wert...

    Ja es kann sein wass ich was falsch gemacht habe aber die Zeile:

    MessageBoxEx( NULL, buf, titel, MB_SERVICE_NOTIFICATION, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US) );

    oder

    MessageBox( NULL, buf, titel, MB_SERVICE_NOTIFICATION );

    gingen LEIDER beide nciht...

    Bitte sag mir einfach ich habe einen Fehler eingebaut... 😞

    Ich bin SOOO knapp am verzweifeln...



  • lippoliv schrieb:

    "Es währe schwachsinn wenn es eine 0%ige Chance gäbe"

    die "chance" ist ja auch nicht 0%. du hast ja immerhin die möglichkeit dein eigenes betriebssystem mit "interaktiven diensten" zu schreiben...

    lippoliv schrieb:

    Dienste währen dann sowas von wenig wert...

    nein, dieser satz zeigt, dass du besagten anderen satz doch nicht verstanden hast.

    ein dienst ist nicht dazu gedacht interaktiv zu sein. wenn du interaktivität willst, dann mach ein normales programm und keinen dienst. period.



  • Was ist der Unterschied zwischen einem Dienst und einem Programm?

    Der Dienst ist lediglich in der Computerverwaltung + dem Passenden Register im Task manager.

    Ausserdem soll der Dienst ja ncihts anzeigen.

    Der Dienst startet ja inzwischen eine *.exe Datei, diese soll dann ein Fenster anzeigen.

    Ahso und deine Bemerkung

    dot schrieb:

    die "chance" ist ja auch nicht 0%. du hast ja immerhin die möglichkeit dein eigenes betriebssystem mit "interaktiven diensten" zu schreiben...

    (Ich könnte auch einfach XP nemen,)
    die %te der Möglichkeit sind -wie jeder verstehen sollte- an Vista ausgelegt....

    OMG wenn ich es nichtmal hinkriege nen Service zu programmieren ohne nen Forum zu benutzen, werde ich kein Betriebssystem schreiben oder? 🤡



  • lippoliv schrieb:

    Was ist der Unterschied zwischen einem Dienst und einem Programm?

    genau das is das problem. ein dienst z.b. läuft immer, ein programm nur wenn ein user eingeloggt ist. das nur als beispiel.

    wenn du erst seit einigen monaten mit C programmierst und von WinAPI keine ahnung hast, warum willst du dann unbedingt einen dienst schreiben, obwohl dir doch jeder mit ahnung hier schon mehrmals gesagt hat, dass das schwachsinn ist!?
    dienste und normale anwendungen sind zwei verschiedene paar schuhe und letztere sicher angenehmer zu tragen 😉

    lippoliv schrieb:

    Der Dienst ist lediglich in der Computerverwaltung + dem Passenden Register im Task manager.

    das is aber nur der schein an der oberfläche. das bedeutet nicht dass man einen dienst nimmt, wenn man diesen "effekt" erzielen will.
    um genau zu sein stimmt das so gar nicht, weil du im task manager eigentlich nur den prozess der einen bestimmten dienst enthält zu gesicht bekommst. den dienst selber siehst du dort nicht.

    lippoliv schrieb:

    Der Dienst startet ja inzwischen eine *.exe Datei, diese soll dann ein Fenster anzeigen.

    und warum muss unbedingt ein dienst eine exe starten!?
    soweit ich mich erinnern kann gings doch nur darum ein programm "im hintergrund" laufen zu lassen!? warum machst du nicht einfach ein normales programm, z.b. mit einem tray icon und einem eintrag im autostart, wie es quasi standard für derlei programme ist und wie es auch schon mehrfach vorgeschlagen wurde!?

    lippoliv schrieb:

    Ahso und deine Bemerkung

    dot schrieb:

    die "chance" ist ja auch nicht 0%. du hast ja immerhin die möglichkeit dein eigenes betriebssystem mit "interaktiven diensten" zu schreiben...

    (Ich könnte auch einfach XP nemen,)
    die %te der Möglichkeit sind -wie jeder verstehen sollte- an Vista ausgelegt....

    dass es unter xp möglich is bedeutet net, dass es a) einfach so möglich is und b) sinnvoll is.

    lippoliv schrieb:

    OMG wenn ich es nichtmal hinkriege nen Service zu programmieren ohne nen Forum zu benutzen, werde ich kein Betriebssystem schreiben oder? 🤡

    richtig. aber wenn du erst anfänger in sachen c und winapi bist, warum dann willst du dann gleich einen dienst programmieren!?
    das is ungefähr gleich absurd...



  • lippoliv schrieb:

    Was ist der Unterschied zwischen einem Dienst und einem Programm?

    ^^ rethorisch, wird gliech darunter selbst von mir erklärt, natürlich weiss ich schon dass es auch in der "Startmethode" unterschiedlich ist...

    dot schrieb:

    richtig. aber wenn du erst anfänger in sachen c und winapi bist, warum dann willst du dann gleich einen dienst programmieren!?
    das is ungefähr gleich absurd...

    erklärst du schon selbst:

    dot schrieb:

    soweit ich mich erinnern kann gings doch nur darum ein programm "im hintergrund" laufen zu lassen!? warum machst du nicht einfach ein normales programm, z.b. mit einem tray icon und einem eintrag im autostart,[...]

    Genau dass ist der Knackpunkt, dass bekomme ich evtl auch hin, aber da wird es schon gegen meine vorstellung:
    es ist sichtbar... 😞

    Es soll ja komplett unsichtbar sein.
    Natürlich, der User muss es erst auf "Autostart" setzen oder so, also er weiss schon, dass dieses Programm auf seinem Computer ist, aber wenn es im Tray ist... da sind meiner meinung nach schon x-1000 andere Programme oder?

    Klar es ist für mich echt nicht einfach, die WinAPI zu verstehen, oder damit umzgehen, aber dass heißt ja nicht, dass ich es nicht versuchen werde.
    Warum ich dass jetzt schon machen will?

    Ich werde nicht meine ganze Ausbildung lang in C programmieren, sonder evtl. in 1 - 2 Monaten mit Java beginnen, wass ich dann wohl eine ganze weile machen werde.
    Und wenn dass beginnt, werde ich keine Zeit mehr haben für C... 😉

    PS: Ich werde jetzt nochmal einen anlauf für den Tray versuchen, aber eins ist sicher: es wird nicht so geil, wie wenns ein Dienst währe.



  • lippoliv schrieb:

    Der Dienst startet ja inzwischen eine *.exe Datei, diese soll dann ein Fenster anzeigen.

    Ich wiederhole mich. Du solltest dich mal mit dem Thema beschäftigen. Dienste laufen in einer anderen WindowsStation. Wenn ein Dienst ein Programm startet, dass der Benutzer sehen können soll, muss der Dienst dieses Programm in der interaktiven WindowsStation des Benutzers und auf dessen (default) Desktop starten.

    lippoliv schrieb:

    aber da wird es schon gegen meine vorstellung:
    es ist sichtbar... 😞

    Und was ist dagegen einzuwenden, wenn der Benutzer sieht, dass er ein Chatprogramm laufen hat?



  • Manche Leute stört es halt wenn 5 Symbole neben der Uhr im tray sind -wir würden ja nur 1 belegen-...

    Du brauchst dich nicht wiederholen, aber die letzte Info hattest du noch nciht erwähnt...

    Luckie schrieb:

    Wenn ein Dienst ein Programm startet, dass der Benutzer sehen können soll, muss der Dienst dieses Programm in der interaktiven WindowsStation des Benutzers und auf dessen (default) Desktop starten.

    Würdest du mir dazu einige Links listen könnten?


  • Mod

    Und wer sagt, dass man dazu ein Icon im Tray braucht.

    Genug Programme sind aktiv ohne ein bischen UI und machen sich nur bemerkbar wenn es notwendig ist.



  • Und wie läuft sowas, z.B. das Beenden des Programms?



  • Kill im Taskmanager.



  • Na super...

    Dass ist ja wohl mindestens so unsaubber wie "SendMessage" oder so...

    Ausserdem: Setz mal die falschen Leute an die Falschen Programme oder halt, die falschen Leute an die dazu passenden Programme...
    Will nicht wissen wie lange dass wiederherstellen dess Systems dauert.



  • Dann pack halt nen zusätzliches Icon ins Startmenü oder so, mit welchem deine Anwendung sich beenden lässt.

    Dienst mit MessageBox oder ähnlichem finde ich merkwürdig. Normalerweise läuft der Dienst einfach und packt seine Meldungen in die Ereignisanzeige? Für gewöhnlich sitzt sowieso niemand den ganzen Tag an nem Server rum und wartet drauf das irgendwelche MessageBoxen auftauchen 😉



  • Startmenueicon -> startet Programm -> Programm sendet WM_CLOSE zu dem versteckten Programm -> Startmenueicon-Porgamm beendet sich selbst...

    Wo ist da der unterschied... oder habe ich dich falsch verstanden?



  • Genau so hab ichs gemeint, wobei ich SendMessage() jetzt nicht unsauber finde 😉
    So sieht das zumindest auch Microsoft:
    How To Terminate an Application "Cleanly" in Win32

    Der Unterschied ist, das du kein ShellNotifyIcon neben der Uhr hast.


Anmelden zum Antworten