Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
news1
Voici un exemple
IP_Address = GetIP()
'-------------------------------------------------------------------- 'retourne adresse IP
Function GetIP() Dim ws : Set ws = CreateObject("WScript.Shell") Dim fso : Set fso = CreateObject("Scripting.FileSystemObject") Dim TmpFile : TmpFile = fso.GetSpecialFolder(2) & "/ip.txt" Dim ThisLine, IP If ws.Environment("SYSTEM")("OS") = "" Then ws.run "winipcfg /batch " & TmpFile, 0, True Else ws.run "%comspec% /c ipconfig > " & TmpFile, 0, True End If With fso.GetFile(TmpFile).OpenAsTextStream Do While NOT .AtEndOfStream ThisLine = .ReadLine If InStr(ThisLine, "Adresse") <> 0 or InStr(ThisLine, "Address") <> 0 Then IP = Mid(ThisLine, InStr(ThisLine, ":") + 2) Loop .Close End With
'WinXP (NT? 2K?) leaves a carriage return at the end of line
If IP <> "" Then If Asc(Right(IP, 1)) = 13 Then IP = Left(IP, Len(IP) - 1) End If GetIP = IP fso.GetFile(TmpFile).Delete Set fso = Nothing Set ws = Nothing End Function
Voici un exemple
IP_Address = GetIP()
'--------------------------------------------------------------------
'retourne adresse IP
Function GetIP()
Dim ws : Set ws = CreateObject("WScript.Shell")
Dim fso : Set fso = CreateObject("Scripting.FileSystemObject")
Dim TmpFile : TmpFile = fso.GetSpecialFolder(2) & "/ip.txt"
Dim ThisLine, IP
If ws.Environment("SYSTEM")("OS") = "" Then
ws.run "winipcfg /batch " & TmpFile, 0, True
Else
ws.run "%comspec% /c ipconfig > " & TmpFile, 0, True
End If
With fso.GetFile(TmpFile).OpenAsTextStream
Do While NOT .AtEndOfStream
ThisLine = .ReadLine
If InStr(ThisLine, "Adresse") <> 0 or InStr(ThisLine, "Address")
<> 0 Then IP = Mid(ThisLine, InStr(ThisLine, ":") + 2)
Loop
.Close
End With
'WinXP (NT? 2K?) leaves a carriage return at the end of line
If IP <> "" Then
If Asc(Right(IP, 1)) = 13 Then IP = Left(IP, Len(IP) - 1)
End If
GetIP = IP
fso.GetFile(TmpFile).Delete
Set fso = Nothing
Set ws = Nothing
End Function
'-------------------------------------------------------------------- 'retourne adresse IP
Function GetIP() Dim ws : Set ws = CreateObject("WScript.Shell") Dim fso : Set fso = CreateObject("Scripting.FileSystemObject") Dim TmpFile : TmpFile = fso.GetSpecialFolder(2) & "/ip.txt" Dim ThisLine, IP If ws.Environment("SYSTEM")("OS") = "" Then ws.run "winipcfg /batch " & TmpFile, 0, True Else ws.run "%comspec% /c ipconfig > " & TmpFile, 0, True End If With fso.GetFile(TmpFile).OpenAsTextStream Do While NOT .AtEndOfStream ThisLine = .ReadLine If InStr(ThisLine, "Adresse") <> 0 or InStr(ThisLine, "Address") <> 0 Then IP = Mid(ThisLine, InStr(ThisLine, ":") + 2) Loop .Close End With
'WinXP (NT? 2K?) leaves a carriage return at the end of line
If IP <> "" Then If Asc(Right(IP, 1)) = 13 Then IP = Left(IP, Len(IP) - 1) End If GetIP = IP fso.GetFile(TmpFile).Delete Set fso = Nothing Set ws = Nothing End Function
X
Bonjour,
Avec Winsock que tu évoques, voici:
Text1 = Winsock1.LocalIP
------------------
"RENAUD Eric" a écrit dans le message de news:
| Bonjour, | | Je souhaiterai récupérer l'adresse IP d'une machine à partir du nom de | l'ordinateur. | | Je sais le faire avec la commande Ping via le DOS mais sous VB je sèche | J'ai regardé du coté de du controle Winsock mais sans succès. | | Sous DOS j'utilise : ping.exe -a W27CPQ2554 | | D'avance merci | |
Bonjour,
Avec Winsock que tu évoques, voici:
Text1 = Winsock1.LocalIP
------------------
"RENAUD Eric" <erenaud@fr.fm> a écrit dans le message de news:
OCaHqEJ0FHA.3588@tk2msftngp13.phx.gbl...
| Bonjour,
|
| Je souhaiterai récupérer l'adresse IP d'une machine à partir du nom de
| l'ordinateur.
|
| Je sais le faire avec la commande Ping via le DOS mais sous VB je sèche
| J'ai regardé du coté de du controle Winsock mais sans succès.
|
| Sous DOS j'utilise : ping.exe -a W27CPQ2554
|
| D'avance merci
|
|
| Bonjour, | | Je souhaiterai récupérer l'adresse IP d'une machine à partir du nom de | l'ordinateur. | | Je sais le faire avec la commande Ping via le DOS mais sous VB je sèche | J'ai regardé du coté de du controle Winsock mais sans succès. | | Sous DOS j'utilise : ping.exe -a W27CPQ2554 | | D'avance merci | |
Vincent Guichard
RENAUD Eric a écrit :
Bonjour,
Je souhaiterai récupérer l'adresse IP d'une machine à partir du nom de l'ordinateur.
Je sais le faire avec la commande Ping via le DOS mais sous VB je sèche J'ai regardé du coté de du controle Winsock mais sans succès.
Sous DOS j'utilise : ping.exe -a W27CPQ2554
D'avance merci
Tu peux le faire avec les APIs.
Voici un exemple simplifié à partir des exemples de l'APIGuide (http://www.allapi.net/)
Espérant que cela te serve,
Vincent Guichard
Dans une form avec un textbox et un bouton:
Private Sub Command1_Click() Dim hHostent As Hostent, AddrList As Long Dim Address As Long, rIP As String Dim HostName As String, Datas As WSAData HostName = Left$(Text1.Text, 64) Call WSAStartup(&H101, Datas) 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 Dim s As String MsgBox (Address Mod 256) & "." & (Address 256 Mod 256) & "." & (Address 256 256 Mod 256) & "." & (Address 256 256 256) Else MsgBox "Impossible d'obtenir l'adresse de " & HostName End If WSACleanup End Sub
Dans un module: Public Const SOCKET_ERROR = 0 Public Const MAX_WSADescription = 256 Public Const MAX_WSASYSStatus = 128 Public 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 Public Type WSAData wVersion As Integer wHighVersion As Integer szDescription(0 To MAX_WSADescription) As Byte szSystemStatus(0 To MAX_WSASYSStatus) As Byte wMaxSockets As Integer wMaxUDPDG As Integer dwVendorInfo As Long End Type Public Declare Function GetHostByName Lib "wsock32.dll" Alias "gethostbyname" (ByVal HostName As String) As Long Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long) Public Declare Function WSACleanup Lib "WSOCK32" () As Long Public Declare Function WSAStartup Lib "WSOCK32" (ByVal wVersionRequired As Long, lpWSADATA As WSAData) As Long
RENAUD Eric a écrit :
Bonjour,
Je souhaiterai récupérer l'adresse IP d'une machine à partir du nom de
l'ordinateur.
Je sais le faire avec la commande Ping via le DOS mais sous VB je sèche
J'ai regardé du coté de du controle Winsock mais sans succès.
Sous DOS j'utilise : ping.exe -a W27CPQ2554
D'avance merci
Tu peux le faire avec les APIs.
Voici un exemple simplifié à partir des exemples de l'APIGuide
(http://www.allapi.net/)
Espérant que cela te serve,
Vincent Guichard
Dans une form avec un textbox et un bouton:
Private Sub Command1_Click()
Dim hHostent As Hostent, AddrList As Long
Dim Address As Long, rIP As String
Dim HostName As String, Datas As WSAData
HostName = Left$(Text1.Text, 64)
Call WSAStartup(&H101, Datas)
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
Dim s As String
MsgBox (Address Mod 256) & "." & (Address 256 Mod 256) & "."
& (Address 256 256 Mod 256) & "." & (Address 256 256 256)
Else
MsgBox "Impossible d'obtenir l'adresse de " & HostName
End If
WSACleanup
End Sub
Dans un module:
Public Const SOCKET_ERROR = 0
Public Const MAX_WSADescription = 256
Public Const MAX_WSASYSStatus = 128
Public 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
Public Type WSAData
wVersion As Integer
wHighVersion As Integer
szDescription(0 To MAX_WSADescription) As Byte
szSystemStatus(0 To MAX_WSASYSStatus) As Byte
wMaxSockets As Integer
wMaxUDPDG As Integer
dwVendorInfo As Long
End Type
Public Declare Function GetHostByName Lib "wsock32.dll" Alias
"gethostbyname" (ByVal HostName As String) As Long
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory"
(hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
Public Declare Function WSACleanup Lib "WSOCK32" () As Long
Public Declare Function WSAStartup Lib "WSOCK32" (ByVal wVersionRequired
As Long, lpWSADATA As WSAData) As Long
Je souhaiterai récupérer l'adresse IP d'une machine à partir du nom de l'ordinateur.
Je sais le faire avec la commande Ping via le DOS mais sous VB je sèche J'ai regardé du coté de du controle Winsock mais sans succès.
Sous DOS j'utilise : ping.exe -a W27CPQ2554
D'avance merci
Tu peux le faire avec les APIs.
Voici un exemple simplifié à partir des exemples de l'APIGuide (http://www.allapi.net/)
Espérant que cela te serve,
Vincent Guichard
Dans une form avec un textbox et un bouton:
Private Sub Command1_Click() Dim hHostent As Hostent, AddrList As Long Dim Address As Long, rIP As String Dim HostName As String, Datas As WSAData HostName = Left$(Text1.Text, 64) Call WSAStartup(&H101, Datas) 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 Dim s As String MsgBox (Address Mod 256) & "." & (Address 256 Mod 256) & "." & (Address 256 256 Mod 256) & "." & (Address 256 256 256) Else MsgBox "Impossible d'obtenir l'adresse de " & HostName End If WSACleanup End Sub
Dans un module: Public Const SOCKET_ERROR = 0 Public Const MAX_WSADescription = 256 Public Const MAX_WSASYSStatus = 128 Public 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 Public Type WSAData wVersion As Integer wHighVersion As Integer szDescription(0 To MAX_WSADescription) As Byte szSystemStatus(0 To MAX_WSASYSStatus) As Byte wMaxSockets As Integer wMaxUDPDG As Integer dwVendorInfo As Long End Type Public Declare Function GetHostByName Lib "wsock32.dll" Alias "gethostbyname" (ByVal HostName As String) As Long Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long) Public Declare Function WSACleanup Lib "WSOCK32" () As Long Public Declare Function WSAStartup Lib "WSOCK32" (ByVal wVersionRequired As Long, lpWSADATA As WSAData) As Long
Jacques93
Bonjour RENAUD Eric, RENAUD Eric a écrit :
Bonjour,
Je souhaiterai récupérer l'adresse IP d'une machine à partir du nom de l'ordinateur.
Je sais le faire avec la commande Ping via le DOS mais sous VB je sèche J'ai regardé du coté de du controle Winsock mais sans succès.
Sous DOS j'utilise : ping.exe -a W27CPQ2554
En complément des réponses de news1, X et Vincent Guichard, une méthode avec WMI, pour varier ;-) :
Private Sub GetIpConfig(Optional Station As String = "localhost") Dim Locator As SWbemLocator Dim Service As SWbemServices Dim NicSet As SWbemObjectSet Dim Nic As SWbemObject
Set Locator = New WbemScripting.SWbemLocator Set Service = Locator.ConnectServer(Station, "rootcimv2") Set NicSet = Service.ExecQuery("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")
Il faaut ajouter une référence à *Microsoft WMI Scripting* -- Cordialement,
Jacques.
Bonjour RENAUD Eric,
RENAUD Eric a écrit :
Bonjour,
Je souhaiterai récupérer l'adresse IP d'une machine à partir du nom de
l'ordinateur.
Je sais le faire avec la commande Ping via le DOS mais sous VB je sèche
J'ai regardé du coté de du controle Winsock mais sans succès.
Sous DOS j'utilise : ping.exe -a W27CPQ2554
En complément des réponses de news1, X et Vincent Guichard, une méthode
avec WMI, pour varier ;-) :
Private Sub GetIpConfig(Optional Station As String = "localhost")
Dim Locator As SWbemLocator
Dim Service As SWbemServices
Dim NicSet As SWbemObjectSet
Dim Nic As SWbemObject
Set Locator = New WbemScripting.SWbemLocator
Set Service = Locator.ConnectServer(Station, "rootcimv2")
Set NicSet = Service.ExecQuery("Select * From
Win32_NetworkAdapterConfiguration Where IPEnabled = True")
Je souhaiterai récupérer l'adresse IP d'une machine à partir du nom de l'ordinateur.
Je sais le faire avec la commande Ping via le DOS mais sous VB je sèche J'ai regardé du coté de du controle Winsock mais sans succès.
Sous DOS j'utilise : ping.exe -a W27CPQ2554
En complément des réponses de news1, X et Vincent Guichard, une méthode avec WMI, pour varier ;-) :
Private Sub GetIpConfig(Optional Station As String = "localhost") Dim Locator As SWbemLocator Dim Service As SWbemServices Dim NicSet As SWbemObjectSet Dim Nic As SWbemObject
Set Locator = New WbemScripting.SWbemLocator Set Service = Locator.ConnectServer(Station, "rootcimv2") Set NicSet = Service.ExecQuery("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")