2016-11-15 2 views
-3

Ich verwende createProcess in C, um eine Eingabeaufforderung zum Ausführen eines JAR zu öffnen. Ich habe herausgefunden, all die Knicke, aber aus Gründen der Fehlersuche würde gerne etwas hinzufügen, wo die Konsole einfach nicht blinkt und ist sofort weg.CreateProcess in C schließt Konsole zu schnell

Was ich suche ist, dass der Jar ausgeführt werden soll und das Befehlsfenster auf einen Knopfdruck wartet, bevor er beendet wird.

Dies wird nur zum Debuggen und ich werde es entfernen, bevor Sie es aus, so dass das Konsolenfenster nicht hängen und alles auf der ganzen Linie zu töten.

if (!CreateProcess(NULL, // No module name (use command line) 
     "java -jar testfile.jar",  // Command line 
     NULL,   // Process handle not inheritable 
     NULL,   // Thread handle not inheritable 
     FALSE,   // Set handle inheritance to FALSE 
     0,    // 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 
     ){ 
      MessageBox(0, "test jar passed", "jar executed", 1); 
      return 1; 
     } 
    else { 
     printf("create process call to jar was sucessful"); 
     MessageBox(0,"jar failed", "Error Test", 1); 
     return 0; 
    } 
} 

Ich benutze es nicht IDE, sondern die Installation auf einem anderen System, so dass ich dll erstellen muss. Kann nicht verwenden IDE-Features zum Anhalten der Eingabeaufforderung dort

+2

Wie öffne ich die Eingabeaufforderung genau? –

+0

createProcess ist anklickbar check it out – Praveen

+3

Wie funktioniert ** SIE ** es? –

Antwort

1

Um das Blinken der Konsole zu stoppen, können Sie getch() verwenden.

getch() wartet auf Benutzer Zeichen eingeben. Wenn Sie getch() nicht haben, können Sie andere Funktionen wie getche(), getchar() verwenden. Aber im Gegensatz zu getch() braucht es eine zusätzliche Newline.

Ich denke, es löst Ihr Problem.

+0

Ich werde versuchen, diese – Praveen

+0

'getch' ist eine MSVC-Funktion in' conio'. Sie können den Standard 'getchar' verwenden - drücken Sie einfach die Eingabetaste, um die Programmausführung abzuschließen. Es gibt keine * extra * 'newline'. –

+0

@SkrewEverything es hat nicht funktioniert nur geblinkt und beendet – Praveen