Avatar billede di8leva Nybegynder
20. april 2005 - 15:55 Der er 14 kommentarer og
1 løsning

Starte javaw uden CMD-prompt

Jeg vil skabe et C++ program før at nemmere kunne starte et java-program, og det virker fint, næsten...

Når jeg dobbelt-klicker på min .exe fil så åbner den før en split-sekund CMD-prompten i baggrunden, så man kan se en stor sort firkant blinke en gang, sedan starter mitt java program.

Er det nogen der kan hjælpe mig at få væk den firkant.

C++ koden ser ud sådan her:
--------------------------
#include <stdio.h>
#include <unistd.h>

int main(int argc, char **argv)
{
    char *args[] = {"javaw", "-jar app.jar", NULL};
    execvp("javaw", args);
    return 0;
}
Avatar billede arne_v Ekspert
20. april 2005 - 15:58 #1
Jeg tror at du skal over og bruge ShellExecute
Avatar billede arne_v Ekspert
20. april 2005 - 15:59 #2
Eller mere drastisk bruge JNI til at starte en JVM med in-process.
Avatar billede di8leva Nybegynder
20. april 2005 - 18:37 #3
arne_v >> Jeg har allaredan prövet med ShellExecute.... samme resultat... og jeg syns at JNI er lidt i overkant :)

Jeg ved at Eclipse kan göre det, men hvordan gör de? :)
Avatar billede arne_v Ekspert
20. april 2005 - 19:11 #4
Jeg er ret sikker på at de bruger JNI !
Avatar billede arne_v Ekspert
20. april 2005 - 19:12 #5
Øh

Hvad med ShellExecute i en windows app fremfor en console app ?
Avatar billede di8leva Nybegynder
20. april 2005 - 19:51 #6
? Den siste förstår jeg ikke.
Avatar billede arne_v Ekspert
20. april 2005 - 20:04 #7
Jeg kom lige til at se at du jo har lavet en C console app.

Måske hjælper det at lave en C windows app.
Avatar billede di8leva Nybegynder
22. april 2005 - 10:20 #8
Nu er jag ikke så go til C. Hvad er forskellneden på en C console app og en C windows app?
Avatar billede arne_v Ekspert
22. april 2005 - 11:10 #9
console app - kører i sort DOS box, har en main

windows app - kører ikke i sort DOS box, har en WinMain

og de buildes forskelligt (hvis du bruger en god IDE så kan du vælge
2 forskellige wizards til at create projektet)
Avatar billede di8leva Nybegynder
22. april 2005 - 19:24 #10
Jeg bruger Dev-C++, og der har jeg inge Wizards.

Men WinMain har jeg også prövet, sammen med ShellExecute (fra en kilde-fil jeg fand på internet, der heter JavaLauncher)
---------------------------------
int APIENTRY WinMain(HINSTANCE hInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR    lpCmdLine,
                    int      nCmdShow)
{
  char thecwd[2] = ".";
  if (ShellExecute(NULL, NULL, "javaw", "-jar ankp_ob.jar", thecwd, SW_SHOWNORMAL)<=(HINSTANCE)32)
  {
    MessageBox(NULL,
      "Could not start the application",
      "Please reinstall the application",MB_OK);
    return 2;
  }
  return 0;
}
Avatar billede di8leva Nybegynder
22. april 2005 - 19:25 #11
(og det gir samme resultat, en sort boks, men det glemte jeg at skrive)
Avatar billede arne_v Ekspert
22. april 2005 - 19:30 #12
når jeg i dev-cpp vælger:

new
project

så har jeg mulighed for at vælge:
  Windows application
  Console application
Avatar billede di8leva Nybegynder
25. april 2005 - 13:02 #13
Hmmm.... detta var meget underligt... hvis jeg opretter et projekt som du siger, og tilpasser metoden WinMain til at kun starte mit javaprogram, så virker det supergodt. Ingen sort boks. (kaldet ser ud sådan her)
-----------------------
int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)

{
  char thecwd[2] = ".";
  ShellExecute(NULL, NULL, "javaw", "-jar ankp_ob.jar", thecwd, SW_SHOWNORMAL);
  return 0;
}

----------------------------
Hvis jeg istedet kopierar alt til en annan fil, og kompilerar, så får jeg min sorte boks nær jeg kør. Meget underligt, men whatever, det virker ju hvis jeg kør med new project.

Smider du et svar? :)
Avatar billede arne_v Ekspert
25. april 2005 - 13:32 #14
svar
Avatar billede arne_v Ekspert
25. april 2005 - 13:33 #15
tricket er at valg af projekt type (console/windows) bestemmer nogle switches
til compilerne/linkeren som påvirker hvordan applikationen opfører sig

main versus WinMain skal så passe til det valgte
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester