Starten von externen Programmen



  • Hallo Leute,

    ich habe ein Problem mit meiner Java-Apps. Diese Applikation will ich aus dem Netzwerk starten, leider haben sich auf einigen Rechnern Pack-Programme auf die jar MIME registriert. Wodurch ich die jar Datei nicht direkt über die VM starten kann. Meine Entwicklungsumgebung ist in der Lage eine exe aus einer Java-Apps zu kompilieren. Leider ruft die exe die CMD /C auf um die integrierte jar Datei zu starten. Jetzt ist das Problem aber, das die Applikation aus einem UNC Pfad aufgerufen werden soll. CMD /C ist aber nich UNC fähig. Ich möchte jetzt ein C++ Programm als Einstiegspunkt für Windows Rechner programmieren, die meine jar Datei startet. Leider bin ich was C++ angeht seit Jahren nicht mehr fitt.

    Ich habe folgenden C++ geschrieben

    using namespace std;
    
    #include  <windows.h>
    #include <string>
    
    int main (int argc, char *argv[])
    {   
        string rt = "java -Xmx128m -jar ProE-Starter.jar ";
        string arg = argv[1];
        string cmd = rt + arg;
    
        STARTUPINFO si;
        PROCESS_INFORMATION pi;
        memset(&si,0,sizeof(STARTUPINFO));
        si.cb=sizeof(STARTUPINFO);
        si.dwFlags=STARTF_USESHOWWINDOW;
        si.wShowWindow=SW_HIDE;
    
        CreateProcess(NULL,(char*)cmd.c_str(),NULL,NULL,false,0,0,0,&si,&pi);
        WaitForSingleObject(pi.hProcess,3000);
        CloseHandle(pi.hThread);
        return 0;    
    }
    

    Mein Problem ist:
    1. Ein „unschönes“ CMD Fenster geht vor der eigentlichen Applikation auf was dann auch die ganze Zeit über bleibt.
    2. Der Befehl java –jar file.jar Blockiert die Shell und das C++ Programm gibt den Befehl nicht frei (ich will das nach dem starten das C++ Programm sich beendet)

    Hat jemand eine Lösung für mein Problem?



  • alexdgg schrieb:

    1. Ein „unschönes“ CMD Fenster geht vor der eigentlichen Applikation auf was dann auch die ganze Zeit über bleibt.

    Nimm eine Windows- und keine Konsolenanwendung (mit WinMain).

    alexdgg schrieb:

    2. Der Befehl java –jar file.jar Blockiert die Shell und das C++ Programm gibt den Befehl nicht frei (ich will das nach dem starten das C++ Programm sich beendet)

    Eventuell kannst du statt CreateProcess mal ShellExecute oder ShellExecuteEx probieren.



  • Zudem fehlt ein CloseHandle(pi.hProcess)..
    Simon



  • Es ist die CreationFlag CREATE_NO_WINDOW die gefehlt hat. Damit erzeugt C++ kein Fenster.


Log in to reply