PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ShellExecute


Markus13
26.04.2005, 17:10
Hallo!

Ich hab versucht einen Ping mit ShellExecute wegzuschicken.
Dies ging aber nicht:


char *filename = "ping www.google.at > C:\\ping.txt";
ShellExecute(0,filename,NULL,NULL,NULL,SW_HIDE);


Weiß jemand wie es richtig geht?
Ich werd aus der Doku nicht schlau.


Diogenes
26.04.2005, 18:33
Probier's mit:

ShellExecute( 0, "open", "ping", "www.google.at > c:\pinglog.txt", nil, sw_hide)

Jidder
26.04.2005, 18:34
@Markus13: hm ... deins funktioniert bei mir auch nicht. das hier hingegen schon. allerdings wartet es nicht darauf, dass der ping befehl beendet, sondern kehrt sofort zurück.
WinExec("cmd /c ping google.de > test.txt", SW_HIDE);
der trick ist, dass cmd gestartet wird, dass wiederum ping startet, weil (ping bei mir zumindest) nicht mit dem > umgehen kann ...

sollte wahrscheinlich auch mit shellexecute gehen. auf ner 95/98/ME kiste musst du evtl. cmd durch command ersetzen ... kann ich aber nicht testen ...

bloodriver
26.04.2005, 19:26
wenn du den ping beliebig lang lassen willst, dann mach einfach ping google.at -t

xOOn
27.04.2005, 08:30
ShellExecute( 0, "open", "ping", "www.google.at > c:\\pinglog.txt", 0, SW_HIDE)

was willst du damit eigenlich bezwecken?

Diabolo
27.04.2005, 12:37
Das verstehe ich auch nicht so ganz, wenn Du die Pingrate haben willst musst Du 'ICMPSendEcho' verwenden. Dann hast Du wenigsten einen gescheiten Rückgabewert in einer Struktur.

Markus13
27.04.2005, 14:03
Ich will eigntlich nur wissen ob der Ping zu google.at erfolgreich ist oder nicht.

Danach weiß ich sozusagen ob eine Internetverbindung besteht oder nicht.

Diabolo
28.04.2005, 12:19
Dann würde ich mit APIs 'InternetOpen' und 'InternetConnect' arbeiten.

Markus13
16.05.2005, 19:43
Ich werd leider aus der Doku nicht schlau.

Kannst du mir ein kurzes Bsp. schreiben?

Diabolo
17.05.2005, 07:59
Ich programmiere in VB, von daher kann ich Dir keinen Code in C++ zur Verfügung stellen.


InternetOpen erstellt ein Handle zu einer Internetsession, Internetconnect versucht eine Verbindung herzustellen.

Je nach Rückgabewert kannst Du ablesen ob der Host erreicht wird oder nicht.

Ansonsten gibt es ICMPSendEcho, das als Return die Zeit hat in der der Host antwortete. Ist das Timeout verstrichen, ist der Host nicht erreichbar.

Siehe MSDN (msdn.microsoft.com).