Re: Problème gestion évènement d'un buttongadget
Publié : mer. 19/mars/2014 14:24
Tu ne peux pas utiliser tel quel ce que j'ai fait pour ton code. Le résultat renvoyé par les différents sites que tu consultes n'est pas formater de la même manière pour récupérer l'adresse ip publique d'un pc.
j'ai modifié ton code en conséquence.
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