PB et le CMD windows

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
Le psychopathe
Messages : 764
Inscription : jeu. 03/mars/2005 19:23

PB et le CMD windows

Message par Le psychopathe »

Voilà ma petite contribution au forum :
Seul soucis, le forum ne garde pas les caractères spéciaux.

Code : Tout sélectionner

Procedure ping(ip.s, mode.s) ; fait un ping d'une machine avec 4 paquets
If mode = "-t"
requete.l = RunProgram("ping"," -t "+ ip , "", #PB_Program_Open|#PB_Program_Read|#PB_Program_Hide   ) 
EndIf
If mode = ""
requete.l = RunProgram("ping", ip , "", #PB_Program_Open|#PB_Program_Read|#PB_Program_Hide   ) 
EndIf
If requete 
  While ProgramRunning(requete) 
    Output.s = ReadProgramString(requete) 
    Output = ReplaceString(Output, "ÿ", " ",#PB_String_NoCase )
    Output = ReplaceString(Output, "requˆte", "requête",#PB_String_NoCase )
    Output = ReplaceString(Output, "‚", "é",#PB_String_NoCase )
    Output = ReplaceString(Output, "re‡us", "reçu",#PB_String_NoCase )
    Debug Output
    If FindString(Output,"Paq",1) 
     Break 
    EndIf 
  Wend 
  CloseProgram(requete) 
  EndIf
EndProcedure


Procedure ipconfig(complet.l) ; donnes les informations réseau du pc
If complet = 1
requete.l = RunProgram("ipconfig","/all" ,"", #PB_Program_Open|#PB_Program_Read|#PB_Program_Hide   ) 
EndIf
If complet = 0
requete.l = RunProgram("ipconfig","" ,"", #PB_Program_Open|#PB_Program_Read|#PB_Program_Hide   ) 
EndIf
If requete 
  While ProgramRunning(requete) 
    Output.s = ReadProgramString(requete) 
    Output = ReplaceString(Output, "ÿ", " ",#PB_String_NoCase )
    Output = ReplaceString(Output, "requˆte", "requête",#PB_String_NoCase )
    Output = ReplaceString(Output, "‚", "é",#PB_String_NoCase )
    Output = ReplaceString(Output, "re‡us", "reçu",#PB_String_NoCase )
    Output = ReplaceString(Output, "h“te", "hôte",#PB_String_NoCase )
    Output = ReplaceString(Output, "Contr“leur", "contrôleur",#PB_String_NoCase )
    
    Debug Output
  Wend 
  CloseProgram(requete) 
  EndIf

EndProcedure


Procedure trace(ip.s) ; permet de savoir par quel vlan on passe pour acceder à une ip
requete.l = RunProgram("tracert", ip , "", #PB_Program_Open|#PB_Program_Read|#PB_Program_Hide   ) 
If requete 
  While ProgramRunning(requete) 
    Output.s = ReadProgramString(requete) 
    Output = ReplaceString(Output, "ÿ", " ",#PB_String_NoCase )
    Output = ReplaceString(Output, "requˆte", "requête",#PB_String_NoCase )
    Output = ReplaceString(Output, "‚", "é",#PB_String_NoCase )
    Output = ReplaceString(Output, "re‡us", "reçu",#PB_String_NoCase )
    If FindString(Output,"Itinéraire déterminé.",1) 
     Break 
    EndIf 
    Debug Output
   Wend 
  CloseProgram(requete) 
  EndIf
EndProcedure


Procedure.s mac() ; renvoie l'adresse Mac de la carte réseau.
requete.l = RunProgram("ipconfig","/all" ,"", #PB_Program_Open|#PB_Program_Read|#PB_Program_Hide   ) 

If requete 
  While ProgramRunning(requete) 
    Output.s = ReadProgramString(requete) 
    Output = ReplaceString(Output, "ÿ", " ",#PB_String_NoCase )
    Output = ReplaceString(Output, "requˆte", "requête",#PB_String_NoCase )
    Output = ReplaceString(Output, "‚", "é",#PB_String_NoCase )
    Output = ReplaceString(Output, "re‡us", "reçu",#PB_String_NoCase )
    Output = ReplaceString(Output, "h“te", "hôte",#PB_String_NoCase )
    Output = ReplaceString(Output, "Contr“leur", "contrôleur",#PB_String_NoCase )
    If FindString(Output,"Adresse physique",1) 
        Output = Right(Output, Len(Output)-FindString(Output, ":", 1))
     ; Debug output
     Break 
    EndIf 
  Wend 
  CloseProgram(requete) 
  ProcedureReturn output
  EndIf
EndProcedure


Procedure NetView() ; affiche toutes les machines sur le même domaine
requete = RunProgram("NET","VIEW" ,"", #PB_Program_Open|#PB_Program_Read|#PB_Program_Hide   ) 

If requete 
  While ProgramRunning(requete) 
    Output.s = ReadProgramString(requete) 
    
    Debug Output ; à cet endroit mettez ce qu'il vous faut pour ajouter dans un gadget par exemple.
  Wend 
  CloseProgram(requete) 
  EndIf
EndProcedure




netview()

; trace("www.google.fr")

; ping("127.0.0.1","")

; ipconfig(1)

Debug mac()
Dernière modification par Le psychopathe le jeu. 29/avr./2010 12:09, modifié 2 fois.
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

Re: PB et le CMD windows

Message par SPH »

Détermination de l'itinéraire vers www.l.google.com [209.85.227.104]

avec un maximum de 30 sauts :



1 <1 ms <1 ms <1 ms livebox.home [192.168.1.1]

2 67 ms 41 ms 40 ms AReims-157-1-48-1.w86-208.abo.wanadoo.fr [86.208.215.1]

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Le psychopathe
Messages : 764
Inscription : jeu. 03/mars/2005 19:23

Re: PB et le CMD windows

Message par Le psychopathe »

Détermination de l'itinéraire vers http://www.l.google.com [209.85.227.105]
avec un maximum de 30 sauts :

1 <1 ms <1 ms <1 ms ***.***.1.1
2 21 ms 21 ms 20 ms **.***.***.254
3 21 ms 23 ms 21 ms ***.***.***.254
4 * 26 ms 21 ms th2-crs16-1-be1104.intf.routers.proxad.net [212.27.56.153]
5 22 ms 22 ms 22 ms cbv-6k-1-po21.intf.routers.proxad.net [212.27.58.2]
6 42 ms 42 ms 43 ms 74.125.50.116
7 22 ms 22 ms 25 ms 209.85.250.142
8 32 ms 32 ms 31 ms 216.239.43.233
9 29 ms 30 ms 29 ms 216.239.49.45
10 * * * Délai d'attente de la demande dépassé.
11 29 ms 35 ms 29 ms wy-in-f105.1e100.net [209.85.227.105]
Dernière modification par Le psychopathe le jeu. 29/avr./2010 12:13, modifié 1 fois.
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

Re: PB et le CMD windows

Message par SPH »

... ce qui veux dire concretement pour toi et pour moi :?:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Le psychopathe
Messages : 764
Inscription : jeu. 03/mars/2005 19:23

Re: PB et le CMD windows

Message par Le psychopathe »

Cela veut dire que cela fonctionne xD
Sinon si tu veux savoir à quoi cela peut servir :
Je m'en sert au boulot pour savoir par quel vlan un pc passe. Comme ça je sais s il est sur le bon réseau ou pas.
Donc une commande à utiliser plus en local, google étant qu'un exemple ;)
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Re: PB et le CMD windows

Message par Patrick88 »

Génial ! Juste les commandes qu'il me manquait... et entre autres, qui m'ont fait programmer l'appli avec windev...

cool, merci

pat
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Re: PB et le CMD windows

Message par Patrick88 »

petit ajout avec Net View, j'utilise également le ping de droppy http://www.purebasic.fr/french/viewtopi ... ilit=ping#

Net View = permet d'obtenir la liste des pécékk connecté au réseau local
= permet d'obtenir l'IP quand on a que le HOSTNAME...

Code : Tout sélectionner

Procedure.s NetView()

Protected Output.s = "", Output2.s = "",Output3.s = ""
Protected requete.l =  0

requete = RunProgram("NET","VIEW" ,"", #PB_Program_Open|#PB_Program_Read|#PB_Program_Hide   ) 

If requete 
  While ProgramRunning(requete) 
    Output = ReadProgramString(requete)
		If Left(Output,1) = "\"
       Output2 = Output2+RTrim(Output)+","
    EndIf
	Wend 
	CloseProgram(requete) 
;\\ACER      Portable,\\EEEPC            eeePC,\\PCPAT             Post1,
output=""
For requete.l = 1 To CountString(Output2,",")
    Output3 = StringField(output2,requete,",")
    Output = output+RTrim(Mid(Output3,1,FindString(Output3,"  ",1)))+"="+LTrim(Mid(Output3,FindString(Output3,"  ",1)))+","
Next
;\\ACER=Portable,\\EEEPC=eeePC,\\PCPAT=Post1,
Output = Left(Output,Len(Output)-1)
;\\ACER=APortable,\\EEEPC=eeePC,\\PCPAT=Post1
	ProcedureReturn output
	EndIf

EndProcedure

Output2.s = NetView()
Debug output2 ; renvoie la chaine "\\ACER=APortable,\\EEEPC=eeePC,\\PCPAT=Post1"

; et tout ça pour obtenir l'ip quand on a que le HOSTNAME
output2 = StringField(StringField(output2,1,","),1,"=") ; => "\\ACER"
Debug HostnameToIP(RemoveString(output2,"\\")) ; => Debug HostnameToIP("ACER")
Avatar de l’utilisateur
Le psychopathe
Messages : 764
Inscription : jeu. 03/mars/2005 19:23

Re: PB et le CMD windows

Message par Le psychopathe »

Je vais l'ajouté plus haut dans mon post mais je vais le modifié un peu car ton code n'est pas fonctionnel niveau entreprise quand on liste 2000 pc ^^.
Je vais arranger ça plus tard.
@++
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Re: PB et le CMD windows

Message par Patrick88 »

j'ai essayé au taf, ça marche avec 146 postes, et c'est largement bon pour moi...
je suis preneur de ta version

pat
Avatar de l’utilisateur
Le psychopathe
Messages : 764
Inscription : jeu. 03/mars/2005 19:23

Re: PB et le CMD windows

Message par Le psychopathe »

Et bien le soucis de ton code c'est que à mon taf on a des commentaires avec le "\" donc après tout se décale.
On ne peut jamais savoir comment sont appelées les machines et surtout les commentaires donc il faut mieux donner un code simple qui pourra s'adapter à toutes les config.

Code : Tout sélectionner

Procedure NetView()
requete = RunProgram("NET","VIEW" ,"", #PB_Program_Open|#PB_Program_Read|#PB_Program_Hide   ) 

If requete 
  While ProgramRunning(requete) 
    Output.s = ReadProgramString(requete) 
    
    Debug Output ; à cet endroit mettez ce qu'il vous faut pour ajouter dans un gadget par exemple.
  Wend 
  CloseProgram(requete) 
  EndIf

EndProcedure

netview()
Répondre