CreateProcess ... wieder mal



  • Rückgabewert? GetLastError()?



  • Rückgabewert von GetLastError = 183,
    siehe 6 Posts weiter oben.

    Danke schonmal...



  • HeyHo...

    Wie es scheint ist das 2te Argument von 'WaitForSingleObject' für die 'Lebensdauer' eines Prozesses zuständig.
    Wenn dem so ist, läuft mein Prozess 15 Sekunden.

    Denn in diesem Zeitfenster kann ich Nachrichten senden und erhalte den Hinweis dass die Nachricht erfolgreich versendet wurde.

    FRAGE:
    Kann dieser kreirte Prozess eine MessageBox anzeigen?

    Wenn nein raste ich aus... Denn dann habe ich umsonst gearbeitet.

    Danke nochmals für alle Beiträge, und alle die noch kommen werden.


  • Mod

    Nochmal: Ein Service kann so einfach keine interaktiven Programm starten, die auf Deinem Desktop sichtbar werden!



  • der prozess, den du startest, kann alles machen, was er will, es ist ja ein eigenständiger prozess...

    EDIT: oh, es handelt sich um einen service.. sorry das hatte ich übersehen... dann ist das natürlich nicht so einfach möglich...



  • Also...

    Service -> startet server.exe -> server.exe hört Port ab -> Nachricht kommt rein -> server.exe öffnet MessageBox und zeigt nachricht an...

    Ich habe mir extra 5273652 ewigkeiten angesehen wie ich diesen ***** ... sry... also:

    Ich habe mir gedacht wenn ich die *.exe Datei so aufrufe, geht dass. Anscheinend nicht.
    Wie bekomme ich dass hin?

    NetSend hats doch auch geschaft.


  • Mod

    Nochmal: Ein Service kann kein Programm starten das interaktiv ist!
    Soll ich es buchstabieren?

    Das ging mal... Seit Vista nicht mehr möglich, also schmink es Dir ab.
    Programm die so etwas machen wollen haben eine zweiteilung. Ein Programm was im Desktop des Users läuft und ein Programm im Kontext des (oder als) Service.

    http://support.microsoft.com/kb/327618



  • Omg.

    Wieso muss dass so komisch sein.
    Also was ich eigentlich nur haben will:
    eine MessageBox.

    Wie lasse ich 2 *.exe Dateien miteinander komunizieren, und wo soll der Unterschied sein, wenn beide von dem Service gestartet werden.

    Dürfen doch eh beide keine Messages anzeigen.

    Dass in dem Artikel ist irgendwie komisch. Ich verstehe dass nciht:
    Ist da ein Protokoll wass die Komunikation für mcih macht oder soll ich das selber machen?

    Gibt es irgendwo dazu ein Tutorial... Ich mache dass erste mal was mit Services und noch dazu was mit *.exe Dateien aufrufen.

    Kann mein Service die *.exe Datei so aufrufen dass sie die MessageBoxen anzeigen kann?
    Dass war ja ursprünglich dass Ziel.

    Danke schonmal.



  • Eine MessageBox kannst Du auch vom Service aus anzeigen:
    Siehe: WTSSendMessage

    Siehe auch: The Windows Vista Developer Story: Application Compatibility Cookbook
    http://www.microsoft.com/indonesia/msdn/appcomp.aspx


  • Mod

    Kann man nicht auch wie in dem Artikel, den ich gepostet habe, einfach MB_SERVICE_NOTIFICATION in MessageBox(Ex) verwenden?



  • Hab ich irgendwie überlesen... sorry... sollte eigentlich auch gehen...



  • Also... dass mit der MB_SERVICE_NOTIFICATION klappt nicht aus dem gestarteten process.

    Also um dass mal zu erklären:
    Ich arbeite hier an einem Dienst -oder tu halt so 😉 - der quasi eine *.exe starten und stoppen soll, wenn er gestartet und gestoppt wird.
    Die *.exe (die auf ein Port hört) wird von einem meiner beiden Kollegen programmiert (bin Azubi, und wir Programmieren -oder versuchen es- NetSend für VISTA).
    Die andere *.exe (die quasi Sendet) kommt von dem übrig bleibenden Kollegen, allerdings hat diese ja nichts mit meinem Service zu tun.

    Wenn man also

    MessageBox(NULL, buf, titel, MB_SERVICE_NOTIFICATION);
    

    schreibt, passiert leider nichts 😞 Vielleicht ist da irgendwo ein Fehler 😮

    Ich werde mir auf jeden Fall das mit dem WTSSendMessage anschauen.
    Geht dass dann eigentlich auch aus dem Prozess des Dienstes herraus?

    DICKES DANKE FÜR DIE POSTS ~und die gedult mit mir...~



  • MSDN schrieb:

    Client Requires Windows Vista, Windows XP, or Windows 2000 Professional.
    Server Requires Windows Server 2008, Windows Server 2003, or Windows 2000 Server.
    Header Declared in WtsApi32.h.

    Library Use WtsApi32.lib.

    DLL Requires WtsApi32.dll.

    Unicode Implemented as WTSSendMessageW (Unicode) and WTSSendMessageA (ANSI).

    Bei mir steht die deklaration von WTSSendMessage(A)(W) -wie auch immer- nicht in dieser Header-Datei 😮 😮

    Ich wiederhole: Ich nutze den MinGW...

    Ich habe auch die Library eingebunden... Funzt nicht...

    #include <stdio.h>
    #include <WtsApi32.h>
    #include <windows.h>
    
    int main( void )
    {
    
    	int fehler;
    
    	WTSSendMessage( -1, NULL, "test", strlen("test"), "nachricht", strlen("nachricht"), MB_OK, 0, NULL, fehler );
    }
    

    Ganz mini sache ums zu verstehen...

    cmd schrieb:

    ./ccWSaaaa.o:sendToFelix.c:(.text+0x79): undefined reference to `WTSSendMessage'


  • Mod

    Und welches SDK hast Du installiert?



  • Da gibt es kein PSDK. die LIBs (*.a) werden von den MinGW Leuten von Hand erzeugt und sind demenstsprechend alt.
    Verwende eine gescheite IDE für Windows: VS2005EE:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-143003.html



  • Wenn du dass meinem Chef erklärst ist dass OK.
    Aber für den anfang sollen wir einen relativ simplen Editor benutzen,
    um Quellcode lesen zu lernen.

    Nein ich habe nichts anderes. in der Libary an sich steht dass auch drinne, aber irgendwie meckert er trotzdem!?

    [edit]
    Die habe ich einfach mal genommen, allerdings kommen da jetzt ca. 1200 Fehler oder kkonflikte von neudefinitionene.... HILFE

    😕


Anmelden zum Antworten