50x Ping aber nach jedem 5 Sekunden warten - ohne sleep funktion

Jasi

Mitglied
Ich habe folgendes codestück:
Code:
sprintf(command, "ping %s -n 50 >>C:/ping.txt", ip);
und ich will dass er nach jedem der 50 pings ein paar sekunden wartet. 5 von mir aus. gibt es da nicht schon in der Zeile die an die Konsole geht etwas wie -wait 5 oder so Ich will nicht nur einmal pingen, dann mit sleep das Programm lahmlegen und dann voll die Fette logdatei haben, weil da jedes mal komplett der Ping befehl durchgeackert wird.

Ein weiteres Problem, solange er pingt ist das cmd fenster offen. kann ich das unsichtbar machen? also im hintergrund oder es unterdrücken?
 
Hi.

Mit dem Standard MS-DOS ping kann man die Zeit zwischen den einzelnen Pings nicht festlegen. Du könntest allerdings ein anderes Ping-Utility nehmen wie z.B. hrPing.

Um das DOS Fenster minimiert zu starten versuch mal "start /min " noch vor den ping Befehl zu schreiben.
 
Also ich bin mir nicht hundertprozentig sicher, aber ich meine, dass ich es schonmal selbst gemacht habe.

ping heise.de erfolgreich...
(5sek. warten)
ping heise.de erfolgreich...

Wie gesagt, ich bin mir nicht hundertprozentig sicher ;)
 
wie wärs mit ner schleife und dann einfach

Code:
ping host -n 1 >> ping.txt

allerdings hast du dann halt bissl mehr text als nur "antwort von...blabla" :>
 
Ich habe jetzt den case WM_TIMER: dafür benutzt.
Das funktioniert auch.
Nur sieht man dann alle 10 Sekunden das cmd Fenster.
 
Wenn Du statt system(...) CreateProcess(...) verwendest, kannst du das Fenster ganz einfach unterdrücken und auch die Programausgaben mit Pipes abfangen.
 
Also ich habe mal das hier benutzt! hat zumindest für meine zwecke ganz gut funktioniert. Ohne das cmd fenster :)

Code:
#include<winuser>

#define IDT_TIMER 1001

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch(message)
    {
        case WM_TIMER:
        {
            switch ((UINT)wParam)
            {
            case IDT_TIMER:
            {
                KillTimer(hwnd, IDT_TIMER);
                {
                        /* function */
                }
            }
            break;
        }
    }
    break;
}


if (SetTimer(hwnd, IDT_TIMER, 10000, (TIMERPROC)NULL))
{
    .../* Timer 10000 ms. füht nach dieser zeit die funktion im case WM_TIMER aus
}

Einfach if(SetTimer(...)) in Schleife haun und das sollte gehn! Denk ich mal!^^
Ich weiß ja nicht wie du den WM_TIMER benutzt hast!
 
Zurück