Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
[Prog] Lecteur Audio.
Auteur Message
Répondre en citant
Message [Prog] Lecteur Audio. 
Salut à vous,

j'ai perdu un défi, 'En trois jours, créer Un lecteur audio Complet' Mais je suis arrivé à quelque chose d'assez sympa.
Je vous le propose, car la finalité, c'est de le partager.

Tout d'abord, j'espère que vous serez indulgent sur les commentaires peu présents Car je n'ai pas fini de codé.
Ensuite il y a sans doute quelques Bug's Car j'ai codé sans trop me casser la tête et je suis allé au plus simple.



Alors, pour le fonctionnement actuelle :

Quatre Boutons :
Fermer Sert à fermer Mr. Green , Boutons Pause/Play au milieu. Ajouté une Play liste pour le moment c'est le bouton du bas.
Et ajouté un morceau à la play liste c'est le bouton qui se trouve en bas/droite.
(à venir des tips sur les boutons)


Code Source :
Code:

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
; ----
#include <SliderConstants.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
; ----
#include <Sound.au3>
; ----
#Include <Array.au3> ; teste

;~ #include 'UDF\GUICtrlSetOnHover_UDF.au3'
#include 'GEnv.au3'


Global $isPlaying = 0, $__OpenSound, $__SLength, $__SLengthms
Global $Lecture[1], $Sys_End = 0, $__SysPos = 1
Global $__SysLectureAll = 1
Global $Debug = False
$Lecture[0] = 0


$__Load = _GEnv_LoadPnGgui('Usb_Sprite.png', 'Exemple Lecteur', -1, -1, 0, 0)
$hwnd = _GEnv_CreateHoverPnGgui(@ScriptDir & '\Grey.Gif', $__Load)

_GEnv_Setdrag($hwnd, 1)
$GPlay = GUICtrlCreateButton('4', 160, 92, 32, 32)
GUICtrlSetFont(-1, 11, 400, 0, 'Webdings')
$Open = GUICtrlCreateButton('0', 287, 119, 16, 16)
GUICtrlSetFont(-1, 8, 400, 0, 'wingdings')
$ADD = GUICtrlCreateButton('^', 305, 102, 16, 16)
GUICtrlSetFont(-1, 8, 400, 0, 'wingdings')
; ----
$Close = GUICtrlCreateButton('r', 293, 12, 16, 16)
GUICtrlSetFont(-1, 8, 400, 0, 'Webdings')
$Minimise = GUICtrlCreateButton('0', 275, 12, 16, 16)
GUICtrlSetFont(-1, 8, 400, 0, 'Webdings')


$SoundL = GUICtrlCreateLabel('', 40, 50, 45, 14)
GUICtrlSetBkColor($SoundL, $GUI_BKCOLOR_TRANSPARENT)

$Title = GUICtrlCreateLabel('', 140, 46, 170, 14)
GUICtrlSetBkColor($Title, $GUI_BKCOLOR_TRANSPARENT)

$FPS = GUICtrlCreateLabel('', 35, 20, 50, 14)

$__Lenght = _GEnv_ProgressInLabel(36, 65, 285, 12, 0xB8CEE8)
_GEnv_ProgressSetState($__Lenght, 0)
GUISetState()




While 1
   $nMsg = GUIGetMsg($hwnd)
   Switch $nMsg
      Case $GUI_EVENT_CLOSE
         _SoundClose($__OpenSound)
         Exit
      Case $Close
         _SoundClose($__OpenSound)
         Exit

      Case $GPlay
         _SysSoundPlay($__OpenSound)

      Case $Open
         $GetSource = FileOpenDialog('Open', @MyDocumentsDir & '\', 'Musiques (*.mp3;*.Wav;*.wma)', 1+2+4)
         if not $GetSource = '' then
            $Lecture = StringSplit($GetSource, '|')
            if $Lecture[0] > 1 then
               $tmp = $Lecture[1]
               For $i = 2 to $Lecture[0]
                  $Lecture[$i-1] = $tmp & '\' & $Lecture[$i]
               Next
               _ArrayDelete($Lecture, $Lecture[0])
               $Lecture[0] = $Lecture[0]-1
            Endif
            _sysLoadSound($Lecture[1])
         Endif
         if $Debug then _ArrayDisplay($Lecture)


      Case $__Lenght[0]
         _SysClicHoverProgress()

      Case $ADD
         _SysAddPlayList()

   EndSwitch

   ; ----
   If $isPlaying then
      _GEnv_ProgressSetState($__Lenght, _CalculatPos($__OpenSound))
      if _SoundStatus($__OpenSound) = 'stopped' Then;And NOT $__SysPos < $Lecture[0] Then
         $isPlaying = 0
         GUICtrlSetData($GPlay,'4')
      Endif
   Endif

   ; ----
   if $__SysLectureAll = 1 then _SysLectureAll()

   $tmp = __GEnv_SpeeDv()
   GUICtrlSetData($FPS, $tmp)
WEnd


Func _SysClicHoverProgress()
   Local $Position, $TMP, $_TMP, $GetTime

   ; ----
   $Position = MouseGetPos()
   ConsoleWrite('Hover - ' &  $Position[0] & @CRLF)
   $TMP = _GEnv_ClicHoverProgress($__Lenght, $Position[0]);~    _ArrayDisplay($TMP)

   ; ----
   $_TMP = ($TMP[2]/100)*$__SLengthms;~    ConsoleWrite($_TMP & ' - ' & $TMP & @CRLF)
   $GetTime = _SysMsToHMS($_TMP);~    _ArrayDisplay($GetTime)
   _SoundSeek($__OpenSound, $GetTime[1], $GetTime[2], $GetTime[3])
   _GEnv_ProgressSetState($__Lenght, _CalculatPos($__OpenSound))
   if _SoundStatus($__OpenSound) = 'stopped' Then
      _SoundPlay($__OpenSound)
      $isPlaying = 1
      GUICtrlSetData($GPlay,';')
   Endif

EndFunc


Func _SysAddPlayList()
   if $Lecture[0] = 0 then Return SetError(1, 0, 0)
   Local $GetSource, $ALectureTmp

   ; ----
   $GetSource = FileOpenDialog('Open', @MyDocumentsDir & '\', 'Musiques (*.mp3;*.Wav;*.wma)', 1+2+4)
   if not $GetSource = '' then
      $ALectureTmp = StringSplit($GetSource, '|')
      if $ALectureTmp[0] > 1 then
         $tmp = $ALectureTmp[1]
         For $i = 2 to $ALectureTmp[0]
            $ALectureTmp[$i-1] = $tmp & '\' & $ALectureTmp[$i]
         Next
         _ArrayDelete($ALectureTmp, $ALectureTmp[0])
         $ALectureTmp[0] = $ALectureTmp[0]-1
         For $i = 1 to $ALectureTmp[0]
            _ArrayAdd($Lecture, $ALectureTmp[$i])
            $Lecture[0] += 1
         Next
      ElseIf $ALectureTmp[0] = 1 Then
         _ArrayAdd($Lecture, $ALectureTmp[$ALectureTmp[0]])
         $Lecture[0] += 1
      Endif
   Endif
   if $Debug then _ArrayDisplay($Lecture)
   Return 1
EndFunc


Func _SysLectureAll()
   if not $Lecture[0] <> '' And not $Lecture[0] <> 0 And not $__SysLectureAll = 1 Then Return SetError(1, 0, 0)
   Local $__SysCalcule = _SoundLength($__OpenSound, 2) - _SoundPos($__OpenSound, 2)

   Select
      Case $__SysCalcule = 0 And $__SysPos < $Lecture[0]
         $__SysPos += 1
         _sysLoadSound($Lecture[$__SysPos], 1)
   EndSelect
   Return 1
Endfunc


Func _sysLoadSound($FilePath, $Opt = Default)
   if $isPlaying = 0 And Not FileExists($FilePath) then Return SetError(1, 0, 0)
   ; ----
   if IsArray($__OpenSound) then _SoundClose($__OpenSound)
   $__OpenSound = _SoundOpen($FilePath)
   If @error then MsgBox(0, 'SoundOpen', 'Erreur Lors de la lecture Du fichier audio')

   $__SLength = _SoundLength($__OpenSound, 1)
   $__SLengthms = _SoundLength($__OpenSound, 2)
   GUICtrlSetData($SoundL, _SoundLength($__OpenSound, 1))
   GUICtrlSetData($Title, _SysGetFileName($FilePath))
   ; ----
   if $Opt = 1 then _SysSoundPlay($__OpenSound)

   Return 1
Endfunc


Func _SysSoundPlay($aSound)
   if not IsArray($aSound) then Return SetError(1, 0, 0)

   ; ----
   Select
      Case $isPlaying = 0
            _SoundPlay($aSound)
            $isPlaying = 1
            GUICtrlSetData($GPlay, ';')
      Case $isPlaying = 1
            _SoundPause($aSound)
            $isPlaying = 0
            GUICtrlSetData($GPlay, '4')
   EndSelect
   Return 1
Endfunc


Func _CalculatPos($hSound)
   if $__SLengthms = '' And $isPlaying = 0 then Return SetError(1, 0, '')
   ; ----
   Local $TmpPos = _SoundPos($hSound, 2)
   local $Purcent = (100/$__SLengthms)*$TmpPos
   ; ----
   Return $Purcent
Endfunc


Func _SysGetFileName($String)
   Local $tmp = StringSplit($String, '\')
   Return $tmp[$tmp[0]]
EndFunc


Func _SysMsToHMS($_TimerMs)
   if not IsNumber($_TimerMs) then Return SetError(1, 0, 0)
   Local $Secs, $Mins, $Hour, $Format
   _TicksToTime(Int($_TimerMs), $Hour, $Mins, $Secs)
   $Format = StringFormat("%02i:%02i:%02i", $Hour, $Mins, $Secs)
   ; ----
   Local $aReturn[5] = [4, $Hour, $Mins, $Secs, $Format]
   Return $aReturn
Endfunc

J'avoue que c'est Moche! mais j'espère dans un futur proche que ça sera plus lisible et Ergonomique. En effet j'ai codé ce qui me passais par la tête donc je n'ai pas visé la performance. ça viendra.

Pour les Sources : Voir le Fichier : GEnvLecteur.zip




______________________________________________________


Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message [Prog] Lecteur Audio. 
Salut,

J'ai voulu tester mais j'ai cette erreur :





______________________________________________________
http://www.YagoServer.net/
Visiter le site web du posteur Yahoo Messenger Skype
Répondre en citant
Message [Prog] Lecteur Audio. 
Salut Mr. Green

Idem pour moi..




______________________________________________________
│Øδ@π.
Visiter le site web du posteur Skype
Répondre en citant
Message [Prog] Lecteur Audio. 
Réglé, pour les personnes qui connaissent un peu l'autoit, il manque un argument dans le GUICTRLsetPos Embarassed
je règle ça desuite Okay .

De plus pendant ces derniers jours je l'ai modifié un peux Mr. Green Sur mon pC de vacances.. (j'ai eu la même erreur je l'avoue)




______________________________________________________


Répondre en citant
Message [Prog] Lecteur Audio. 
Re,

RE-Testé sous win7 il marche nikel. Musique = "un petit ricard dans un verre à ballon" Mort de Rire
c'est "exemple.exe" ou un truc du genre qui marche mais pas Genv.exe.

C'est super, beau boulot Okay Okay




______________________________________________________
│Øδ@π.
Visiter le site web du posteur Skype
Répondre en citant
Message [Prog] Lecteur Audio. 
Salut !

Il y a beaucoup de lecteurs audio fait en Autoit mais je n'en ai pas fait. Celui là est très beau, je n'avais encore jamais réussi à faire un interface aussi différente que le winform classique moz_wink .

Si tu veux le continuer, tu peux encore faire beaucoup de choses (par exemple lire les tags, monter le son, suivante, musique aléatoire dans un dossier, afficher la jaquette) mais là c'est déjà super bien ! Okay




______________________________________________________
Message [Prog] Lecteur Audio. 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch