System Befehl ausführen (Arp) VC++.net 2003



  • Hallo Leute,

    ich habe mal wieder ein Problem. Ich möchte einen Systembefehl, "Arp -d *" zur laufzeit meines Programmes ausführen. Das Programm soll solange warten bis der Befehl ausgeführt wird.
    Mein Ansatz war folgender:

    void cNetTools::clearARP(String *ipAddr)
    {
    	Process *process = new Process();
    	ProcessStartInfo *ps = new ProcessStartInfo(S"arp", String::Concat("-d ", ipAddr));
    
    	process->set_StartInfo(ps);
    	process->StartInfo->CreateNoWindow = true;
    	process->Start();
    
    	process->WaitForExit();
    	Console::WriteLine(S"DEBUG: ARP-Cache cleared !");
    
    }
    

    Es wird ein neuer Process angestossen, der den Befehl ausführt. Das geht soweit.
    Allerdings läuft meine Applikation weiter ohne auf das Ende des Processes zu warten. Ich dachte mit dem

    process->WaitForExit();
    

    sollte das geregelt werden... Aber nö.

    Kann mir jemand einen Tipp geben? Geht das auch ohne den ganzen Process-Kram?

    Gruss
    Nils



  • Du startest hier ja auch nicht "arp", sondern "cmd", welches dann wiederum "arp" sucht und startet....
    Vermutlich beendet sich die "cmd" schneller als das "arp" (da ja auch keine gemeinsame Console vorhanden ist, womit dann cmd auf arp warten würde....)



  • Hm...
    Gibts noch ne andere Möglichkeit "ARP" auszuführen?



  • In Büchern wird sowas gern mit Threads gemacht. Du startest einen neuen Thread, mit welchen du "ARP" ausführst. Dann besteht wohl die Möglichkeit, den ersten Thread so lange anzuhalten bis der zweite beendet ist.
    Allerdings hab ich sowas selbst noch nie probiert.



  • Ich habs jetzt erstmal mit

    system("Arp -d *");
    

    gemacht...


Anmelden zum Antworten