Form anzeigen, und automatisch externes JAVA Programm starten



  • Hallo,

    ich versuche die ganze Zeit mit dem BB6 ein Formular zu erstellen, welches beim start angezeigt wird, und danach soll eine JAVA apllikation gestartet werden:

    Sleep(2000);
    WinExec("jre\\bin\java Application", NULL);
    Form1->Close();
    

    Diese Zeilen habe ich in das Ereigniss onShow vom Formular gesetzt. Aber er Zeigt mir das Formular nicht an, bevor die WinExec ausgeführt wird. Auch habe ich onCreate probiert ... es geht net.

    Wie stelle ich es an, das mir das Formular angezeigt wird, bevor diese beiden Zeilen abgearbeitet werden. Wo liegt mein Fehler?

    Das nächste ist, die Methode Close() wird nicht ausgeführt. Wieso? Die Java Applikation wird sauber ausgeführt.

    Danke schon mal.



  • Hallo,

    Versuch's mal in "OnActivate" :

    [b]Repaint();[/b]
    Sleep(2000);
    WinExec("jre\\bin\java Application", NULL);
    Form1->Close();
    

    Hab's zwar nicht probiert, sollte aber gehen.

    P.S.:
    Verwende besser "ShellExecute", "WinExec" ist nur aus Kompatibilitätsgründen noch verfügbar.

    Bis dann denn,
    🙂
    Nash



  • Kann mir auch jemand sagen, wie ich eine .exe mit dem BCB6 auf diese Art Starte?

    Ich habe in den FAQ's schon was in der Richtung gefunden.
    http://www.c-plusplus.net/forum/viewtopic.php?t=39256

    Ich hab das aber alles nicht ganz verstanden. Geht das auch einfacher??



  • Hallo,

    Das sollte reichen...

    AnsiString Pfad_der_EXE = "C:\\Winnt\\regedit.exe";
      ShellExecute(Handle,
                   0,
                   ExtractFileName(Pfad_der_EXE).c_str(),
                   0,
                   ExtractFilePath(Pfad_der_EXE).c_str(),
                   SW_NORMAL);
    

    Bis dann denn,
    🙂
    Nash



  • Danke,

    das Repaint war wohl das schlüsselwort 🙂

    @Nash: hm, wie funktioniert das dann, wenn ich "Application" als parameter übergebe? Dein code funzt bei mir net.



  • wie funktioniert das dann, wenn ich "Application" als parameter übergebe?

    welchen parameter meinst du denn genau? so etwa?

    [cpp]ShellExecute(Handle,
    0,
    ExtractFileName(Application->ExeName).c_str(),
    0,
    ExtractFilePath(Application->ExeName).c_str(),
    SW_NORMAL);[/cpp]
    das reicht schon. was geht denn bei dir nicht?

    gruß, oli



  • Also bei mir wird jetzt die JAVA Applikation nicht gestartet. das Problem könnte sein, daß der java.exe der Parameter "Application" übergeben werden muss. Also, genau genommen "jre\\bin\java.exe Application" (Zwischen java.exe und Application ist ein Leerzeichen)

    Wie muß dann der Aufruf lauten, da scheinbar die Zerlegung in Pfad und Ausführende Datei nicht passt. Und der Parameter "Application" muss mit übergeben werden.

    Achso, und was macht Handle in dem Aufruf? kann ich damit etwas anfangen?



  • Hallo,

    ShellExecute(Handle,
                 0,
                 "jre\\bin\java.exe",
                 "Application",
                 "jre\\bin",
                 SW_NORMAL);
    

    Achso, und was macht Handle in dem Aufruf? kann ich damit etwas anfangen?

    Mal in der Hilfe nachschauen :

    Microsoft Win32 Programmer's Reference

    Specifies a parent window. This window receives any message boxes that an application produces. For example, an application may report an error by producing a message box.

    Bis dann denn,
    🙂
    Nash



  • danke für die Lösung 🙂



  • tja, copy & paste hatte nix geholfen 🙂

    nur der vollständigkeitshalber:
    ein '\' hatte im aufruf von java gefehlt, und die 2. Pfadangabe sollte da hin zeigen, wo die .class datei sich befinden (in dem Fall "Application.class").

    Aber vielen Dank, hat super funktioniert.

    Nur noch kurz: statt SW_SHOW kann man 'null' angeben, und dann wird die Konsole nicht angezeigt, falls man sie nicht benötigt.


Log in to reply