Frage zu exteres Prog starten aus FAQ



  • Hallo BCB'ler

    Hier mal der Link zu dem Beitrag http://www.c-plusplus.net/forum/viewtopic.php?t=39256

    Ich habe die CreateProcess Methode entschlossen, da ich über den Status bescheidt wissen muss.
    Jedoch öffne ich nich nur einmal dieses Programm (so würde das zuerst geöffne den Handel 'verlieren'). Wie kann ich denn das anders Regeln, was gibt es da für Möglichkeiten, diesen Handel wirgendwie zur Laufzeit zu erstellen. Mittels eines Array???

    HANDLE Note[0]
    

    oder wie? Sorry für die dumme Frage, aber ich brauche erstmal etwas hilfe 😞



  • Äh ja, mittels einer der diversen Möglichkeiten, daten in einer Liste zu speichern... Ob das nun ein Array, eine TList, ein std::vector oder eine der anderen Listen-Container verwendest, ist wirklich egal.

    -junix



  • Also irgendwie ist das doch scheiße.

    HANDLE Note[2]; erstmal deklariert, dann jeweils Note[1] und Note[2] eine Datei zum öffnen angegeben.

    nun nun soll der Timer nach allen zwei schauen.

    for(int i=0; i<2; i++) {
        if(Note[i]) {
          DWORD noteExitCode[i];
          if(GetExitCodeProcess(Note[i], &noteExitCode[i])) {
            if(noteExitCode[i]== STILL_ACTIVE) {
              // immer noch an
              ShowMessage("Notepad ist geöffnet");
            } else {
              // Programm beendet
              ShowMessage("Notepad ist geschlossen");
              //CloseHandle(Note[1]);
            }
          }
        }
     }
    

    Anscheinend gefällt ihm noteExitCode[i];, dass [i] nicht, denn wenn ich diese einzeln anspreche [1] geht das.
    Wie stelle ich das an, in der FAQ steht, das mit den Komponenten, aber dafür muss man was mit New erstellen.
    Und dann noch ne Frage hinterher: Wie kann ich zählen, wie viele Elemente sich in dem array befinden?



  • Hallo,

    Warum soll noteExitCode ein Array sein? Mal abgesehen davon, dass man auf diese Art kein Array deklarieren kann. Der Compiler muss bei dieser Methode schon zur Compilezeit wissen wie gross das Array sein soll.

    Das sollte eigentlich gehen

    for(int i=0; i<2; i++) { 
        if(Note[i]) { 
          DWORD noteExitCode; 
          if(GetExitCodeProcess(Note[i], &noteExitCode)) { 
            if(noteExitCode == STILL_ACTIVE) { 
              // immer noch an 
              ShowMessage("Notepad ist geöffnet"); 
            } else { 
              // Programm beendet 
              ShowMessage("Notepad ist geschlossen"); 
              //CloseHandle(Note[i]); 
            } 
          } 
        } 
     }
    

    Ich glaube du solltest die das Eine oder Andere Tutorial über Arrays bzw. Pointer mal durchlesen.

    Ciao


Anmelden zum Antworten