Problème gestion évènement d'un buttongadget
Publié : mer. 19/mars/2014 9:59
Bonjour,
j'ai bricolé un petit outil réseau qui affiche ip WAN, LAN , nom du poste ; il doit y en avoir déjà des centaines comme ça , c'est pour mon usage personnel,
c'est pour travailler la gestion des évènements dans les forms, étant habitué aux frameworks de dev où il suffit de cliquer dans le gadget edit pour que la fonction se créée auto dans le code, je voulais voir ce que ça peut donner en PB,
Je rencontre un problème très simple (grrrrr ! ) j'ai sur un buttongadget en txt l'url du site web pour récupérer l'ip WAN, je ne connais pas d'autres possibilité que de parser dans une page web ;
Pour l'ip Lan, je pensais taper dans l'API windows ou le registre, enfin plein de solutions pour ça mais oh surprise il existe ExamineIPAddresses() et NextIPAddress() !! on va donc pas réinventer la roue,
pour le WAN
quand je clique sur le bouton, je veux que l'url change, de http://www.monip.fr à http://www.monip.org par ex,
j'arrive à le faire changer mais sur 5 possibilités mon prog reste bloqué sur le deuxième choix,
je poste mon code, si vous pouvez m'éclairer !! je vous en remercie d'avance,
j'ai bricolé un petit outil réseau qui affiche ip WAN, LAN , nom du poste ; il doit y en avoir déjà des centaines comme ça , c'est pour mon usage personnel,
c'est pour travailler la gestion des évènements dans les forms, étant habitué aux frameworks de dev où il suffit de cliquer dans le gadget edit pour que la fonction se créée auto dans le code, je voulais voir ce que ça peut donner en PB,
Je rencontre un problème très simple (grrrrr ! ) j'ai sur un buttongadget en txt l'url du site web pour récupérer l'ip WAN, je ne connais pas d'autres possibilité que de parser dans une page web ;
Pour l'ip Lan, je pensais taper dans l'API windows ou le registre, enfin plein de solutions pour ça mais oh surprise il existe ExamineIPAddresses() et NextIPAddress() !! on va donc pas réinventer la roue,
pour le WAN
quand je clique sur le bouton, je veux que l'url change, de http://www.monip.fr à http://www.monip.org par ex,
j'arrive à le faire changer mais sur 5 possibilités mon prog reste bloqué sur le deuxième choix,
je poste mon code, si vous pouvez m'éclairer !! je vous en remercie d'avance,
Code : Tout sélectionner
;PureBasic
;Basic Net tool
;JmG49@2014
Enumeration 0 ; Id. Fenêtres
#FENETRE1
EndEnumeration
Enumeration 0 ; Id. Gadgets
#FEN1_GETIP
#FEN1_QUIT
#FEN1_SITE
#FEN1_edit1
#FEN1_edit2
#FEN1_edit3
#FEN1_edit4
EndEnumeration
InitNetwork()
Global Buffer.s
site0.s ="www.monip.org"
site1.s ="www.monip.fr"
site2.s ="www.monip.eu"
site3.s ="www.frameip.com"
site4.s ="www.hostip.fr"
If OpenWindow(#FENETRE1, 320, 200, 570, 150, "PureBasic - Network Utility: IP Adresses (JmG@2014)", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ButtonGadget(#FEN1_GETIP, 200, 10, 130, 20, "Get Ip")
ButtonGadget(#FEN1_QUIT, 350, 10, 70, 20, "Quit")
ButtonGadget(#FEN1_SITE, 10, 10, 170, 20, site0.s)
EditorGadget(#FEN1_edit1, 120, 40, 150, 20)
EditorGadget(#FEN1_edit2, 300, 40, 160, 20)
EditorGadget(#FEN1_edit3, 120, 80, 150, 20)
EditorGadget(#FEN1_edit4, 300, 80, 160, 20)
TextGadget(#PB_Any, 0, 40, 100, 20, " Local IP Address")
TextGadget(#PB_Any, 0, 80, 100, 20, " Wan IP Address")
EndIf
Procedure GetWanIp()
Protected Ip.s, IP1.i, IP2.i, IP3.i,IP4.i
IP = StringField(Trim(Mid(Buffer, 1, 15)), 1, "<")
IP1 = Val(StringField(IP, 1, "."))
IP2 = Val(StringField(IP, 2, "."))
IP3 = Val(StringField(IP, 3, "."))
IP4 = Val(StringField(IP, 4, "."))
ProcedureReturn MakeIPAddress(IP1, IP2, IP3, IP4)
EndProcedure
Procedure Initweb()
Protected File.l
ReceiveHTTPFile(GetGadgetText(#FEN1_SITE), "index.php")
File=ReadFile(#PB_Any, "index.php")
If File
While Eof(File)=0
Buffer=ReadString(File)
If FindString(Buffer, "IP :")
Buffer=Trim(Mid(Buffer, 40))
EndIf
Wend
CloseFile(File)
EndIf
EndProcedure
Procedure.s GetIp()
If InitNetwork()
ExamineIPAddresses()
Result2 = NextIPAddress()
ProcedureReturn IPString(Result2)
EndIf
EndProcedure
Repeat
Evenement.l = WaitWindowEvent()
Select EventWindow()
;==============================================
;-EVENTS
;==============================================
Case #FENETRE1
Select Evenement
Case #PB_Event_Gadget
Select EventGadget()
Case #FEN1_QUIT
result = MessageRequester("Dialog", "Do you really want to quit ?", #PB_MessageRequester_YesNo )
If result= 6
Break
EndIf
Case #FEN1_GETIP
ClearGadgetItems(#FEN1_edit1)
ClearGadgetItems(#FEN1_edit2)
ClearGadgetItems(#FEN1_edit3)
Initweb()
SetGadgetItemText(#FEN1_edit3,1,IPString(GetWanIp()))
GetIp()
SetGadgetItemText(#FEN1_edit1,1, GetIp())
SetGadgetItemText(#FEN1_edit2,1,GetEnvironmentVariable("COMPUTERNAME"))
Case #FEN1_SITE
SetGadgetText(#FEN1_SITE, site0.s)
SetGadgetText(#FEN1_SITE, site1.s)
SetGadgetText(#FEN1_SITE, site2.s)
SetGadgetText(#FEN1_SITE, site3.s)
SetGadgetText(#FEN1_SITE, site4.s)
EndSelect ; end of test gadget events
Case #PB_Event_CloseWindow
Break
EndSelect
EndSelect
ForEver
;epb