Recupere le resultat d'un ping [Résolu]

hmoy 5 Messages postés jeudi 27 mai 2004Date d'inscription 24 février 2005 Dernière intervention - 23 févr. 2005 à 16:16 - Dernière réponse : hmoy 5 Messages postés jeudi 27 mai 2004Date d'inscription 24 février 2005 Dernière intervention
- 24 févr. 2005 à 16:14
Hello, je voudrais récupèrer le résultat d'un "ping 10.32.4.3>c:testip.txt"
quand je lance ma macro avec shell("ping 10.32.4.3") celle-ci se lance bien
mais quand je fais shell("ping 10.32.4.3 >d:testip.txt") çà ne marche pas, le fichier testip.txt ne se crée pas. Si quelqu'un à une solution merci d'avance.
hmoy
Afficher la suite 

4 réponses

Meilleure réponse
hmoy 5 Messages postés jeudi 27 mai 2004Date d'inscription 24 février 2005 Dernière intervention - 24 févr. 2005 à 16:14
3
Merci
Super, cela fonctionne très bien. Merci à tous pour les infos

hmoy

Merci hmoy 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

crenaud76 4172 Messages postés mercredi 30 juillet 2003Date d'inscription 9 juin 2006 Dernière intervention - 23 févr. 2005 à 18:26
0
Merci
Oui l efichier doit bine se créer mais le pb c'est que Shell est asynchrone !! Il lance le ping et te rend aussitot la main ! Donc quand VB execute la ligne suivant immédiatement le Shell, le fichier n'a pas encore été créé, car Ping n'a pas fini de s'executer. Va voir mes sources, tu en trouvera une porposant une version synchrone de shell()
Ou alors tu peux utiliser les api pour fair eun ping directement depuis ton code VB

Option Explicit


Const SOCKET_ERROR = 0
Private Type WSAdata
wVersion As Integer
wHighVersion As Integer
szDescription(0 To 255) As Byte
szSystemStatus(0 To 128) As Byte
iMaxSockets As Integer
iMaxUdpDg As Integer
lpVendorInfo As Long
End Type
Private Type Hostent
h_name As Long
h_aliases As Long
h_addrtype As Integer
h_length As Integer
h_addr_list As Long
End Type
Private Type IP_OPTION_INFORMATION
TTL As Byte
Tos As Byte
Flags As Byte
OptionsSize As Long
OptionsData As String * 128
End Type
Private Type IP_ECHO_REPLY
Address(0 To 3) As Byte
Status As Long
RoundTripTime As Long
DataSize As Integer
Reserved As Integer
data As Long
Options As IP_OPTION_INFORMATION
End Type
Private Declare Function GetHostByName Lib "wsock32.dll" Alias "gethostbyname" (ByVal HostName As String) As Long
Private Declare Function WSAStartup Lib "wsock32.dll" (ByVal wVersionRequired&, lpWSAdata As WSAdata) As Long
Private Declare Function WSACleanup Lib "wsock32.dll" () As Long
Private Declare Function IcmpCreateFile Lib "icmp.dll" () As Long
Private Declare Function IcmpCloseHandle Lib "icmp.dll" (ByVal HANDLE As Long) As Boolean
Private Declare Function IcmpSendEcho Lib "ICMP" (ByVal IcmpHandle As Long, ByVal DestAddress As Long, ByVal RequestData As String, ByVal RequestSize As Integer, RequestOptns As IP_OPTION_INFORMATION, ReplyBuffer As IP_ECHO_REPLY, ByVal ReplySize As Long, ByVal TimeOut As Long) As Boolean


' +-----------------------------------------------------------------------------------------------------------+
' | |
' | Ping(HostName As String) As Boolean |
' | |
' +-----------------------------------------------------------------------------------------------------------+
' | |
' | Objet : |
' | Effectue un 'PING' d'une machine d'après son nom de Host |
' | |
' | Arguments : |
' | HostName -> Nom de la machine à "Pinger" |
' | |
' | Valeur de retour : |
' | True si la machine à répondu et False sinon |
' | |
' | Version : |
' | 1.0 le 04/07/2003 : Première version |
' | |
' +-----------------------------------------------------------------------------------------------------------+
' | Developpement : Christophe RENAUD - CAF Le Havre (763) - DSI |
' +-----------------------------------------------------------------------------------------------------------+
Public Function Ping(HostName As String) As Boolean
Dim hFile As Long, lpWSAdata As WSAdata, hHostent As Hostent, AddrList As Long
Dim Address As Long, OptInfo As IP_OPTION_INFORMATION, EchoReply As IP_ECHO_REPLY

WSAStartup &H101, lpWSAdata
If GetHostByName(HostName + String(64 - Len(HostName), 0)) <> SOCKET_ERROR Then
CopyMemory hHostent.h_name, ByVal GetHostByName(HostName + String(64 - Len(HostName), 0)), Len(hHostent)
CopyMemory AddrList, ByVal hHostent.h_addr_list, 4
CopyMemory Address, ByVal AddrList, 4
End If
hFile = IcmpCreateFile()
If hFile = 0 Then
Ping = False
Exit Function
End If
OptInfo.TTL = 255
IcmpSendEcho hFile, Address, String(32, "A"), 32, OptInfo, EchoReply, Len(EchoReply) + 8, 2000
If EchoReply.Status = 0 Then
Ping = True
Else
Ping = False
End If
IcmpCloseHandle hFile
WSACleanup
End Function

Colle tout ca dans un module standard et appelle la fonction Ping(). Ce ping se fait par le nom de host mais il est possible de la modifier pour faire cela via l'IP

Christophe R
cbnet 176 Messages postés vendredi 29 octobre 2004Date d'inscription 7 mars 2005 Dernière intervention - 23 févr. 2005 à 18:28
0
Merci
dans le premier cas c'est une commande windows. tu peux faire ca aussi
depuis Demarrer/Executer. Dans le second cas, tu utilises une
redirection pour mettre le resultat dans un fichier texte. Tu ne peux
faire cela qu'avec cmd... donc voici la solution :

il faut que tu fasses un cmd /c "ping 10.32.4.3 >d:\testip.txt", et donc dans VB ca donne :

Shell ("cmd /c " & chr(34) & "ping 10.32.4.3 >d:\testip.txt" & chr(34))

ca devrait marcher
hmoy 5 Messages postés jeudi 27 mai 2004Date d'inscription 24 février 2005 Dernière intervention - 23 févr. 2005 à 20:29
0
Merci
ok, merci pour la réponse. Je vais essayer dès demain matin.

hmoy

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.