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



## Jasi (10. Oktober 2005)

Ich habe folgendes  codestück: 

```
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?


----------



## deepthroat (10. Oktober 2005)

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.


----------



## Insane13 (10. Oktober 2005)

Doch irgendein Parameter gibts da (meine ich).


----------



## deepthroat (10. Oktober 2005)

Hm. Ich hab keinen gefunden (http://www.computerhope.com/pinghlp.htm). Vielleicht ist der Parameter geheim?


----------



## Insane13 (10. Oktober 2005)

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


----------



## rook (10. Oktober 2005)

wie wärs mit ner schleife und dann einfach


```
ping host -n 1 >> ping.txt
```

allerdings hast du dann halt bissl mehr text als nur "antwort von...blabla" :>


----------



## Jasi (13. Oktober 2005)

Ich habe jetzt den case WM_TIMER: dafür benutzt. 
Das funktioniert auch. 
Nur sieht man dann alle 10 Sekunden das cmd Fenster.


----------



## jokey2 (14. Oktober 2005)

Wenn Du statt system(...) CreateProcess(...) verwendest, kannst du das Fenster ganz einfach unterdrücken und auch die Programausgaben mit Pipes abfangen.


----------



## napstermania (23. Oktober 2005)

Also ich habe mal das hier benutzt! hat zumindest für meine zwecke ganz gut funktioniert. Ohne das cmd fenster 


```
#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!


----------

