j'ai modifié ton code en conséquence.
Code : Tout sélectionner
;PureBasic
;Basic Net tool
;JmG49@2014
Enumeration 0 ; Id. Fenêtres
#FENETRE1
EndEnumeration
Enumeration 0 ; Id. Gadgets
#FEN1_GETIP
#FEN1_SITE
#FEN1_edit1
#FEN1_edit2
#FEN1_edit3
#FEN1_edit4
EndEnumeration
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"
InitNetwork()
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_SITE, 10, 10, 170, 20, site0.s)
StringGadget(#FEN1_edit1, 120, 40, 150, 20, "")
StringGadget(#FEN1_edit2, 300, 40, 160, 20, "")
StringGadget(#FEN1_edit3, 120, 80, 150, 20, "")
StringGadget(#FEN1_edit4, 300, 80, 160, 20, "")
TextGadget(#PB_Any, 10, 40, 100, 20, "Local IP Address")
TextGadget(#PB_Any, 10, 80, 100, 20, "Wan IP Address")
EndIf
Procedure.s GetWanIp(Site)
Protected File.l, IPPositionStart, IPPositionEnd
ReceiveHTTPFile("http://"+GetGadgetText(#FEN1_SITE), "index.php")
File=ReadFile(#PB_Any, "index.php")
Buffer = ""
If File
While Eof(File)=0
Buffer+ReadString(File)
Wend
;Debug buffer
Select Site
Case 0 ;www.monip.org
IPPositionStart = FindString(Buffer, "IP :")+5
IPPositionEnd = FindString(Buffer, "<br>", IPPositionStart)
Case 1 ;www.monip.fr (Pas de réception d'élément)
Case 2 ;www.monip.eu
IPPositionStart = FindString(Buffer, "<span class="+Chr(34)+"Style1"+Chr(34)+">")+21
IPPositionEnd = FindString(Buffer, "</span>", IPPositionStart)
Case 3 ;www.frameip.com
IPPositionStart = FindString(Buffer, "<a href="+Chr(34)+"/mon-adresse-ip-internet/"+Chr(34)+">")+36
IPPositionEnd = FindString(Buffer, ":", IPPositionStart)
Case 4 ;www.hostip.fr
IPPositionStart = FindString(Buffer, "value=")+7
IPPositionEnd = FindString(Buffer, Chr(34), IPPositionStart)
EndSelect
Buffer=Trim(Mid(Buffer, IPPositionStart, IPPositionEnd-IPPositionStart))
CloseFile(File)
EndIf
DeleteFile("index.php")
ProcedureReturn Buffer
EndProcedure
Procedure.s GetIp()
ExamineIPAddresses()
Result2 = NextIPAddress()
ProcedureReturn IPString(Result2)
EndProcedure
;-Boucle évenementielle
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case #FEN1_GETIP
SetGadgetText(#FEN1_edit1, "")
SetGadgetText(#FEN1_edit2, "")
SetGadgetText(#FEN1_edit3, "")
;La procédure GetWanIp() doit connaitre le site qui est testé.
SetGadgetText(#FEN1_edit3, GetWanIp(GetGadgetData(#FEN1_SITE)))
GetIp()
SetGadgetText(#FEN1_edit1, GetIp())
SetGadgetText(#FEN1_edit2, GetEnvironmentVariable("COMPUTERNAME"))
Case #FEN1_SITE
Select GetGadgetData(#FEN1_SITE)
Case 4
SetGadgetText(#FEN1_SITE, site0.s)
SetGadgetData(#FEN1_SITE, 0)
Case 0
SetGadgetText(#FEN1_SITE, site1.s)
SetGadgetData(#FEN1_SITE, 1)
Case 1
SetGadgetText(#FEN1_SITE, site2.s)
SetGadgetData(#FEN1_SITE, 2)
Case 2
SetGadgetText(#FEN1_SITE, site3.s)
SetGadgetData(#FEN1_SITE, 3)
Case 3
SetGadgetText(#FEN1_SITE, site4.s)
SetGadgetData(#FEN1_SITE, 4)
EndSelect
EndSelect ; end of test gadget events
Case #PB_Event_CloseWindow
If MessageRequester("Dialog", "Do you really want to quit ?", #PB_MessageRequester_YesNo ) = #PB_MessageRequester_Yes
End
EndIf
EndSelect
ForEver