Jar mittels C++ starten Konsole verschwindet nicht!

daniel_sun

Erfahrenes Mitglied
Hi,

ich will meine JAR mittels einer kleinen EXE starten:

Code:
#include <stdlib.h>
#include <stdio.h>
using namespace std;

int main(int argc, char *argv[]){
	system("javaw.exe -jar myProg.jar");
}

Das Javaprogramm startet auch nur die Konsole verschwindet nicht. Sie bleibt da sollte Sie nicht bei javaw verschwinden?! Auch wenn ich nur javaw -jar myProg.jar eingebe komme ich zu keinem Erfolg!

Auch eine system("exit") oder exit(0); führt zu keinem erfolg. Ich kann die Konsole manuell Schnießen und mit dem Java Programm arbeiten. Schließe ich das Javaprogramm schließt sich die Konsole mit!
 
Zuletzt bearbeitet:
Aus EXE schließe ich mal, dass das ganze unter Windows läuft. Versuch's mal so:
C++:
#include <stdlib.h>
#include <stdio.h>
#include <windows.h>
using namespace std;
 
int main(int argc, char *argv[]){
   char* ctitle = "jar starter"; 
   SetConsoleTitle(ctitle);
   system("javaw.exe -jar myProg.jar");
   HWND hwnd = FindWindow ( NULL, ctitle ); 
   SendMessage( hwnd, WM_CLOSE, 0, 0 ); 
}
 
Gleiches Problem wie vorher. Komisch das ich es schon mal so wie oben gelöst (bei nem andern Programm (hab leider den code nicht mehr)) habe aber da ging es nun jetzt aber nicht mehr.
 
Naja, du erstellst ja auch ein Konsolenprojekt, und verwendest mit system eine "Konsolenfunktion"
(da Messages herumsenden ist, wenn schon, auch nur ein Workaround).

Mach ein Win32-Projekt, WinMain, und CreateProcess.
Statt Konsole, main, system

Dann entsteht überhaupt keine Konsole, die man wegbekommen muss.
 
Da bräucht ich mal unterstützung in sachen code oder zumindest ein tutorials denn von c++ hab ich nur sehr sehr wenig ahnung
 
Ich hab diesen Code-Schnipsel gefunden, damit gehts:

C++:
#include <stdio.h>
#include <windows.h>
int main( VOID )
{
	STARTUPINFO si;
	PROCESS_INFORMATION pi;
	int spi=sizeof(pi);
	int ssi= sizeof(si);
	ZeroMemory( &si, sizeof(si) );
	si.cb=sizeof(STARTUPINFO); //sizeof(si);
	ZeroMemory( &pi, sizeof(pi) );
	 int b=0;
	 printf( "\nCalling CreateProcess \n" );
	// Start the child process.
	b=CreateProcess("c:\\windows\\system32\\cmd.exe ",
	" /C javaw  -jar myProg.jar"  ,	 // Command line.
		NULL,			 // Process handle not inheritable.
		NULL,			 // Thread handle not inheritable.
		0,			// Set handle inheritance to FALSE.
	   CREATE_NO_WINDOW,				// No creation flags.
		NULL,			 // Use parent's environment block.
		NULL,			 // Use parent's starting directory.
		&si,			  // Pointer to STARTUPINFO structure.
		&pi );			// Pointer to PROCESS_INFORMATION structure.
	if( b==0)

	{
		printf( "CreateProcess failed %d (%ld).\n", b, GetLastError() );
		return -1;
	}
	printf( "\nCreateProcess OK\n" );
}
 
Da kommt dann doch wieder eine Konsole, wenn auch nur kurz...
Und sich mal mit der Doku auseinandersetzen
statt irgendwo her kopieren wäre doch nichts Schlechtes :rolleyes:
 
Zurück