besoin d'aide pour un ptit soft de rien du tous
besoin d'aide pour un ptit soft de rien du tous
Bonjour à tous, voila je cherche à faire un petit soft pour un amis qui est pompier volontaire, il consulte en temp réél les interventions dans tous le département à partir d'une page php, cette page est rafraichit à chaque nouvelle intervention ou chaque fin d'intervention (mais pour la fin d'intervention d'une caserne, elle disparait de la liste). J'aimerais pouvoir lui faire un petit soft de rien du tous qui l'avertirais par un messagerequester() que ca caserne à eu une intervention. A s'avoir que si il y a une deuxième intervention il aurra un deuxiéme messagerequester() etc.......
Mais attention il ne faut pas que à chaque rafraichissement de la page il ai un messagerequester() pour les véhicules ou caserne déja sortie.
Je ne sais pas si c bien expliquer ??????
Enfin en gros je ne c pas comment mis prendre si quellqu'un pouvais m'aider. Merci.
voici la page en question http://www.sdis54.fr/interventions.php
Mais attention il ne faut pas que à chaque rafraichissement de la page il ai un messagerequester() pour les véhicules ou caserne déja sortie.
Je ne sais pas si c bien expliquer ??????
Enfin en gros je ne c pas comment mis prendre si quellqu'un pouvais m'aider. Merci.
voici la page en question http://www.sdis54.fr/interventions.php
il suffit de regarder chaque intervention présente dans la page à chaque refresh.
Pour chaqu'une d'entre elle, il faut regarder dans une liste chainée gérée par ton logiciel si elle a déjà été sonnée. Si oui, alors on l'ignore, si non, un petit message requester et on ajoute l'intervention dans la liste chainée.
Pour chaqu'une d'entre elle, il faut regarder dans une liste chainée gérée par ton logiciel si elle a déjà été sonnée. Si oui, alors on l'ignore, si non, un petit message requester et on ajoute l'intervention dans la liste chainée.
en fait le plus simple c'est de
récupérer les informations sur chaque interventions listées sur la page dans l'ordre
si une info concerne sa caserne tu compare l'intervention avec le contenu d'une liste chainée ou un tableau si tu y arrive mieux
si l'intervention n'est pas dans ta liste tu ajoute l'intervention a la liste et tu affiche ton message
si l'intervention est déjà dans la liste tu passe a l'information suivante
et tu fais ca toute les 180 secondes puisque c'est le 'refresh' de la page visiblement
récupérer les informations sur chaque interventions listées sur la page dans l'ordre
si une info concerne sa caserne tu compare l'intervention avec le contenu d'une liste chainée ou un tableau si tu y arrive mieux

si l'intervention n'est pas dans ta liste tu ajoute l'intervention a la liste et tu affiche ton message
si l'intervention est déjà dans la liste tu passe a l'information suivante
et tu fais ca toute les 180 secondes puisque c'est le 'refresh' de la page visiblement
La récupération des infos, il faut la faire toi-même.
Tu peux charger la page dans un WebGadget sur une fenêtre invisible, et récupérer le code source de la page dans une variable, avec la fonction GetGadgetItemText(#Web, #PB_Web_HtmlCode).
Tu peux connaitre le nombre d'interventions en cours en comptant le nombre de balises <tr >.
Ensuite, avec une boucle, il faut récupérer ce qui est contenu dans les balises <td > </td>
Plus facile à dire qu'à faire, mais c'est faisable.
Tu peux charger la page dans un WebGadget sur une fenêtre invisible, et récupérer le code source de la page dans une variable, avec la fonction GetGadgetItemText(#Web, #PB_Web_HtmlCode).
Tu peux connaitre le nombre d'interventions en cours en comptant le nombre de balises <tr >.
Ensuite, avec une boucle, il faut récupérer ce qui est contenu dans les balises <td > </td>
Plus facile à dire qu'à faire, mais c'est faisable.
Essaye de mettre à jour la version beta 4.20, au niveau du net y'a des commandes sympa.
Maintenant pour gérer le contenu d'une page web, j'utilise les procédures :
(marche aussi avec les version anterieurs)
Ensuite avec
tu auras la source de ta page contenu dans Source$
Ensuite à toi de traiter son contenu
Maintenant pour gérer le contenu d'une page web, j'utilise les procédures :
(marche aussi avec les version anterieurs)
Code : Tout sélectionner
ProcedureDLL.s Url2Text2(Url.s, OpenType.b,ProxyAndPort.s)
;/ Author : Pille
isLoop.b=1
INET_RELOAD.l = $80000000
hInet.l=0
hURL.l=0
Bytes.l=0
Buffer.s= Space (2048 )
RES.s= ""
hInet = InternetOpen_ ( "" , OpenType, ProxyAndPort, "" , 0)
hURL = InternetOpenUrl_ (hInet, Url, #Null , 0, INET_RELOAD, 0)
Repeat
InternetReadFile_ (hURL,@Buffer, Len (Buffer), @Bytes)
If Bytes = 0
isLoop=0
Else
RES = RES + Left (Buffer, Bytes)
EndIf
Until isLoop=0
InternetCloseHandle_ (hURL)
InternetCloseHandle_ (hInet)
ProcedureReturn RES
EndProcedure
ProcedureDLL.s Url2Text(Url.s)
ProcedureReturn Url2Text2(Url,1, "" )
EndProcedure
Code : Tout sélectionner
Url$="http://www.sdis54.fr/interventions.php"
Source$=Url2Text(Url$)
Ensuite à toi de traiter son contenu

Non je ne suis pas feignasse
, bon voila j'utilise le code de Ar-S pour récupérer le code source de la page dans une variable, ensuite je pensais ecrire le contenue de la variable dans un fichier texte pour pouvoir ensuite lire le fichier texte et faire de la comparaisons pour affichez l'info qu'il me faut. Enfin bref j'en suis pas encore la pour le moment. voici le code que j'utilise pour ecrir le contenue de ma variable dans un fichier texte.
Mais l'orsque j'ouvre mon fichier texte avec notpad, ca ma écrit le code source au moin 20 fois dans le fichier alors qu'une seul fois m'aurait suffit.

Code : Tout sélectionner
OpenFile(0, "SourceCode.txt")
FileSeek(0, Lof(0))
WriteString(0, Source$, #PB_Ascii)
CloseFile(0)
ah ok, j'ai cru un momentNon je ne suis pas feignasse

Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.
En mode debug, il me met le code source de la page au moin 20 fois et je c pas pourquoi.
Voici le code source complet:
Voici le code source complet:
Code : Tout sélectionner
;/ Created with PureVisionXP v4.03
;- Global Variables and Constants
Global BubbleTipStyle.l:BubbleTipStyle=0
;- Window Constants
Enumeration 1
#Window_Form1
#Window_Form2
EndEnumeration
#WindowIndex=#PB_Compiler_EnumerationValue
;- Gadget Constants
Enumeration 1
;Window_Form1
#MenuBar_Form1_Fichier
#MenuBar_Form1_Quitter
#Gadget_Form1_Web2
;Window_Form2
#Gadget_Form2_Text4
#Gadget_Form2_Text5
#Gadget_Form2_Text6
#Gadget_Form2_Text7
#Gadget_Form2_Button8
EndEnumeration
#GadgetIndex=#PB_Compiler_EnumerationValue
;- MenuBar Constants
Enumeration 1
#MenuBar_Form1
EndEnumeration
#MenuBarIndex=#PB_Compiler_EnumerationValue
;- StatusBar Constants
Enumeration 1
#StatusBar_Form1
EndEnumeration
#StatusBarIndex=#PB_Compiler_EnumerationValue
#StatusBar_Form1_Field1 =0
#StatusBar_Form1_Field2 =1
ProcedureDLL.s Url2Text2(Url.s, OpenType.b,ProxyAndPort.s)
;/ Author : Pille
isLoop.b=1
INET_RELOAD.l = $80000000
hInet.l=0
hURL.l=0
Bytes.l=0
Buffer.s= Space (2048 )
RES.s= ""
hInet = InternetOpen_ ( "" , OpenType, ProxyAndPort, "" , 0)
hURL = InternetOpenUrl_ (hInet, Url, #Null , 0, INET_RELOAD, 0)
Repeat
InternetReadFile_ (hURL,@Buffer, Len (Buffer), @Bytes)
If Bytes = 0
isLoop=0
Else
RES = RES + Left (Buffer, Bytes)
EndIf
Until isLoop=0
InternetCloseHandle_ (hURL)
InternetCloseHandle_ (hInet)
ProcedureReturn RES
EndProcedure
ProcedureDLL.s Url2Text(Url.s)
ProcedureReturn Url2Text2(Url,1, "" )
EndProcedure
Procedure.l Window_Form1()
If OpenWindow(#Window_Form1,411,108,480,348,"Interventions en cours.",#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget|#PB_Window_TitleBar|#PB_Window_ScreenCentered|#PB_Window_WindowCentered|#PB_Window_Invisible)
CreateMenu(#MenuBar_Form1,WindowID(#Window_Form1))
MenuTitle("Fichier")
MenuItem(#MenuBar_Form1_Quitter,"Quitter")
If CreateGadgetList(WindowID(#Window_Form1))
WebGadget(#Gadget_Form1_Web2,0,1,480,304,"http://www.sdis54.fr/interventions.php")
PVDynamic_AddStatusBar(#Window_Form1,#StatusBar_Form1,CreateStatusBar(#StatusBar_Form1,WindowID(#Window_Form1)),2)
AddStatusBarField(200)
AddStatusBarField(200)
PVDynamic_AddLockWindow(#Window_Form1,#StatusBar_Form1,1,3)
PVDynamic_AddGadget(#Window_Form1,#Gadget_Form1_Web2,3)
HideWindow(#Window_Form1,0)
ProcedureReturn WindowID(#Window_Form1)
EndIf
EndIf
EndProcedure
Procedure.l Window_Form2()
If OpenWindow(#Window_Form2,437,221,464,110,"Départ.",#PB_Window_ScreenCentered|#PB_Window_Invisible)
Brush.LOGBRUSH\lbColor=255
SetClassLong_(WindowID(#Window_Form2),#GCL_HBRBACKGROUND,CreateBrushIndirect_(Brush))
If CreateGadgetList(WindowID(#Window_Form2))
TextGadget(#Gadget_Form2_Text4,2,4,454,26,"Départ intervention Centre de Secours de BAYON.",#PB_Text_Center)
SetGadgetColor(#Gadget_Form2_Text4,#PB_Gadget_BackColor,255)
SetGadgetFont(#Gadget_Form2_Text4,LoadFont(#Gadget_Form2_Text4,"Georgia",14,0))
TextGadget(#Gadget_Form2_Text5,194,32,59,20,"à",#PB_Text_Center)
SetGadgetColor(#Gadget_Form2_Text5,#PB_Gadget_BackColor,255)
SetGadgetFont(#Gadget_Form2_Text5,LoadFont(#Gadget_Form2_Text5,"Georgia",12,0))
TextGadget(#Gadget_Form2_Text6,185,58,39,15,"Heure :")
SetGadgetColor(#Gadget_Form2_Text6,#PB_Gadget_BackColor,255)
TextGadget(#Gadget_Form2_Text7,221,58,60,15,"00h00",#PB_Text_Center)
SetGadgetColor(#Gadget_Form2_Text7,#PB_Gadget_BackColor,255)
ButtonGadget(#Gadget_Form2_Button8,2,83,461,21,"Quitter l'alarme")
HideWindow(#Window_Form2,0)
ProcedureReturn WindowID(#Window_Form2)
EndIf
EndIf
EndProcedure
Procedure WindowCallback(WindowID,Message,wParam,lParam)
ReturnValue=#PB_ProcessPureBasicEvents
If Message=#WM_GETMINMAXINFO
ReturnValue=PVDynamic_LockWindow(WindowID,lParam)
EndIf
If Message=#WM_SIZE
ReturnValue=PVDynamic_Resize(WindowID)
EndIf
If Message=#WM_CTLCOLORSTATIC Or Message=#WM_CTLCOLOREDIT Or Message=#WM_CTLCOLORLISTBOX
ReturnValue=PVDynamic_ColorGadget(lParam,wParam)
EndIf
ProcedureReturn ReturnValue
EndProcedure
Url$="http://www.sdis54.fr/interventions.php"
Source$=Url2Text(Url$)
;- Main Loop
If Window_Form1()
SetWindowCallback(@WindowCallback())
quitForm1=0
Repeat
EventID =WaitWindowEvent()
MenuID =EventMenu()
GadgetID =EventGadget()
WindowID =EventWindow()
Select EventID
Case #PB_Event_CloseWindow
If WindowID=#Window_Form1
quitForm1=1
EndIf
Case #PB_Event_Menu
Select MenuID
Case #MenuBar_Form1_Quitter
End
EndSelect
Case #PB_Event_Gadget
Select GadgetID
Case #Gadget_Form1_Web2
OpenFile(0, "SourceCode.txt")
FileSeek(0, Lof(0))
WriteString(0, Source$, #PB_Ascii)
CloseFile(0)
Debug Source$
EndSelect
EndSelect
Until quitForm1
CloseWindow(#Window_Form1)
EndIf
End