Merci
allez come j'aime bien finir le boulot , voici la suite
en utilisant Firefox via Run prg
Code : Tout sélectionner
; plus court , tu meurs
Adresse_Flux_mp3$="http://direct.franceinter.fr/live/franceinter-midfi.mp3" ; adresse a lire
Compilateur = RunProgram(Adresse_Flux_mp3$, "/?", "")
le problem c'est que le navigateur reste en affichage , alors voici comment ruser ...
j'utilise 2 fonctions (ou partie de fonction de mon ancienne "lib Hacker"
pour recuperer le PID et le Handle du navigateur ,ça permet ensuite de pouvoir cacher au lancement
et de le killer lorsqu'on appuis sur le bouton STOP ...
ça peut faire illusion a condition de disposer de Firefox , je pense qu'on peut surement faire la meme chose avec EDGE ou Internet explorer
il faudrai cibler en fonction du systeme d'exploitation utilisé par l'user ...
ça reste quand meme de la bidouille ; perso je prefere utiliser une lib toute faite ... mais bon c'etait le challenge soulevé
faire un lecteur de Radio sans utiliser de librairie ...
c'est une soluce comme une autre
... voila je ne vous derange plus
PS si chez vous ça ne marche pas c'est que soit vous n'avez pas Firefox
soit il faut augmenter les Delays du code ... sur certains ordi ça peut etre plus long a demarrer
Code : Tout sélectionner
;***********************************************
;Titre :*lecteur_de_web_radio4
;Auteur : Zorro
;Date :27/12/2018
;Heure :17:28:24
;Version Purebasic : PureBasic 5.42 LTS (Windows - x86)
;Version de l'editeur :EPB V2.68
; Libairies necessaire : Aucune
;***********************************************
Declare openwindow_win()
Declare.l cheater_pid_return(gamewindowtext.s)
#SW_FORCEMINIMIZE=11
; plus court , tu meurs
Global Adresse_Flux_mp3$
Global Flag ; determine si le flux est en lecture
Global Pid ; l'id du navigateur qui sert a lire le mp3
;{- Enumerations / DataSections
;{ Windows
Enumeration
#Win
EndEnumeration
;}
;{ Gadgets
Enumeration
#Text_0
#Button_Play
#Button_Stop
#String_Adresse
EndEnumeration
;}
;{ Fonts
Enumeration
#Font_Text_0
EndEnumeration
; ************* pour le PID *****************
Structure PROCESSENTRY33
dwSize.L
cntUsage.L
th32ProcessID.L
th32DefaultHeapID.L
th32ModuleID.L
cntThreads.L
th32ParentProcessID.L
pcPriClassBase.L
dwFlags.L
szExeFile.b[#MAX_PATH]
EndStructure
;**************************************
;}
Define.l Event
;}
Procedure OpenWindow_Win()
If OpenWindow(#Win, 550, 157, 507, 260, "Radio a 2 balles", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
TextGadget(#Text_0, 90, 0, 270, 40, "Radio a 2 balles", #PB_Text_Center)
ButtonGadget(#Button_Play, 30, 110, 90, 40, "Play")
ButtonGadget(#Button_Stop, 30, 170, 90, 40, "Stop")
StringGadget(#String_Adresse, 80, 50, 360, 30, "http://direct.franceinter.fr/live/franceinter-midfi.mp3")
Adresse_Flux_mp3$=GetGadgetText(#String_Adresse)
; Gadget Fonts
SetGadgetFont(#Text_0, LoadFont(#Font_Text_0, "Microsoft Sans Serif", 18, #PB_Font_Bold|#PB_Font_HighQuality))
EndIf
EndProcedure
OpenWindow_Win()
;{- Event loop
Repeat
Event = WaitWindowEvent(12)
Select Event
; ///////////////////
Case #PB_Event_Gadget
Select EventGadget()
Case #Text_0
Case #Button_Play
Compilateur = RunProgram(Adresse_Flux_mp3$, "", "",#PB_Program_Hide)
delay(5000) ; le temps de lancer Firefox ...
hWin= FindWindow_(#Null, "franceinter-midfi.mp3 - Mozilla Firefox" ) ; on recherche si une fenetre ayant pour titre "hello" .....existe oui ?? ;franceinter-midfi.mp3 - Mozilla Firefox
delay(3000) ; le temps de recup le handle...
ShowWindow_(hWin, #SW_HIDE) ; on cache la fenetre du navigateur (Bidouille LOL )
; a partir de la ça doit jouer normalement
Pid=cheater_pid_return("Firefox.exe")
Flag=#true
Case #Button_Stop
If Flag=#True
ShowWindow_(hWin,#SW_SHOW) ; on remontre la fenetre qu'on avait caché ...
phandle = OpenProcess_ ($1, #False, pid)
If phandle <> #Null
If TerminateProcess_ (phandle, 1)
result = #True
EndIf
CloseHandle_ (phandle)
EndIf
Flag=#False
Endif
Case #String_Adresse
Adresse_Flux_mp3$=GetGadgetText(#String_Adresse) ; pour que ceci fonctionne il faut analyser ce qui est entré , et prendre que la derniere partie du lien pour lui ajouter " - Mozilla Firefox" (voir ligne 81)
EndSelect
; ////////////////////////
Case #PB_Event_CloseWindow
Select EventWindow()
Case #Win
CloseWindow(#Win)
Break
EndSelect
EndSelect
Forever
;
;}
;- Zone Procedures
ProcedureDLL.L cheater_pid_return(gamewindowtext.s)
; Laisse cette procedure au dessus des autres, car elle est appelé par les autres
Name.s=UCase(gamewindowtext.s)
Recherche=0
If OpenLibrary(0, "Kernel32.dll")
CreateToolhelpSnapshot = GetFunction(0, "CreateToolhelp32Snapshot")
ProcessFirst = GetFunction(0, "Process32First")
ProcessNext = GetFunction(0, "Process32Next")
If CreateToolhelpSnapshot And ProcessFirst And ProcessNext ; Ensure than all the functions are found
Process.PROCESSENTRY33\dwSize = SizeOf(PROCESSENTRY33)
Snapshot = CallFunctionFast(CreateToolhelpSnapshot, #TH32CS_SNAPPROCESS, 0)
If Snapshot
ProcessFound = CallFunctionFast(ProcessFirst, Snapshot, Process)
While ProcessFound
Nom.s=UCase(PeekS(@Process\szExeFile, -1, #PB_Ascii))
Nom=GetFilePart(Nom)
If FindString(Nom,Name.s,1);;=Name;If Nom=Name
Recherche =1
pid=Process\th32ProcessID
EndIf
ProcessFound = CallFunctionFast(ProcessNext, Snapshot, Process)
Wend
EndIf
CloseHandle_(Snapshot)
EndIf
CloseLibrary(0)
EndIf
ProcedureReturn pid
EndProcedure