OVH Cloud OVH Cloud

Identification réseau

11 réponses
Avatar
Emcy
Bonjours,

Est-il possible avec Windows XP (et windows serveur 2003) de déterminier
l'adresses IP, les masques de sous réseau, les adresses des serveur WINS,
DHCP, etc ?

Ensuite est-il possible de renouveler l'adresse IP de l'ordinateur (genre
"ipconfig /renew") et de récuperer les changements ?

Pour finir, est-il possible de voir tous les PC que le PC voit sur le réseau
et de savoir si il a accès à ces PC ?
Remarque : on m'a déja donné une macro qui identifie les PC sur le réseau
mais elle ne marche pas sur windows XP

1 réponse

1 2
Avatar
_rg_rg_
Milles excuses, j'ai oublié le command.com!
La raison en est fort simple, 99,99% du temps,
quand on appelle une fonction dos, on a besoin
du résultat immédiatement, on doit donc bloquer
l'exec du code le temps que le process dos
se finisse. C'est ma proc Shellsynchrone dans le
module public. Le reste n'est que du standard.
Notes que cmd.exe est plus adapté que command.com
si tu est sous nt/xp. On reste de cette manière
en 32 bits.
Attention aux grandes lignes qui risquent d'être
coupées en 2.


Mettre dans un module standard

--- couper ici ---
Option Explicit



' --- API ---
Public Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess
As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Public Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess
As Long, lpExitCode As Long) As Long
Public Const PROCESS_QUERY_INFORMATION = &H400
Public Const STILL_ACTIVE = &H103



Public Function ShellSynchrone(Commande As String) As Long
Dim hProg As Long, hProcess As Long, ExitCode As Long
hProg = Shell("cmd.exe /C " & Commande, 0)
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, hProg)
Do
GetExitCodeProcess hProcess, ExitCode
DoEvents
Sleep 1
Loop While ExitCode = STILL_ACTIVE
ShellSynchrone = ExitCode
End Function




Public Function NoSpace(S As String) As String
' supprime les espaces a droite et a gauche
' d'une chaine de caracteres
While S Like " *"
S = Right(S, Len(S) - 1)
Wend
While S Like "* "
S = Left(S, Len(S) - 1)
Wend
NoSpace=S
End Function
--- couper ici ---


Le code de la feuille
--- couper ici ---
Option Explicit


Dim DomainList() As String
'un tableau de longueur variable qui
'va contenir tous les noms de domaines




' identifier TOUS les domaines auquels j'ai accés
' net view /domain

'Domain
'
'--------------------------------------------------------------------------
-----
'DOMAIN1
'.../...
'DOMAINn
'The command completed successfully.
'
'


' la sortie est un fichier de n lignes
' le nombre de domaines est de n-8
' l'énumération commence à la lgn 4
' ATTENTION : 2 lignes vides en fin de fichier



' À la fin de l'execution de cette procedure
' le tableau DomainList contient tous les
' noms de domaines de ton intranet
Private Sub Domaines()
Dim fic As Integer 'handle fichier
Dim Lgn As String 'une ligne complete
Dim C As Long 'un compteur
ReDim DomainList(0)
fic = FreeFile
ShellSynchrone "net view /domain >C:domain.txt"
Open "C:domain.txt" For Input As #fic
While Not EOF(fic)
C = C + 1
Line Input #fic, Lgn
If C > 3 Then
DomainList(C - 4) = NoSpace(Lgn)
ReDim Preserve DomainList(C - 3)
End If
Wend
Close #fic
ReDim Preserve DomainList(C - 6)
End Sub






Sub teste()
Dim i As Integer
Domaines
For i = 0 To UBound(DomainList)
Cells(i + 1, 1).Value = DomainList(i)
Next i
End Sub


--- couper ici ---













"Alain CROS" wrote in
news::

Bonjour

Sub main()
Shell Environ("Windir") & "Command.com /c dir C:>c:dir.txt"
End Sub

Alain CROS

"Emcy" a écrit dans le message de news:
#3J$
si je lance une de ces deux macros, j'ai le message fichier
introuvable qui apparaît

Sub main()
Shell "dir > c:dir.txt"
End Sub

Sub main()
Shell "dir"
End Sub

Le problème ne vient-il pas de windows XP ?


Aec cette macro, j'ai pas le même message d'erreur : la fenetre dos
s'ouvre et dedans c'est écris que la synthaxe est mauvaise

Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
'a mettre dans un module vb

Sub TestReseau()
Temp = Shell("net name > c:temp2.txt", 1)
Sleep 5000
End Sub







1 2