Vidéo en écran de veille

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Vidéo en écran de veille

Message par Le Soldat Inconnu »

Salut,

un code qui permet de jouer une vidéo en plein écran comme écran de veille.

Code : Tout sélectionner

Global Fichier.s, Volume.l, Zoom.l

Procedure ReLance()
  If MovieStatus() = 0
    PlayMovie(0, WindowID())
  EndIf
EndProcedure

Procedure Reglage()
  OpenWindow(0, 0, 0, 200, 70, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "VidéoVeille - Réglage")
  CreateGadgetList(WindowID())
  
  TextGadget(0, 5, 5, 50, 15, "Vidéo :")
  StringGadget(1, 50, 5, 100, 20, GetFilePart(Fichier), #PB_String_ReadOnly)
  ButtonGadget(2, 155, 5, 40, 20, "Ouvrir")
  CheckBoxGadget(3, 5, 30, 190, 15, "Plein écran")
  SetGadgetState(3, Zoom)
  CheckBoxGadget(4, 5, 50, 190, 15, "Jouer le son")
  SetGadgetState(4, Volume)
   
  Repeat
    Event = WaitWindowEvent()
    
    If Event = #PB_EventGadget
      Select EventGadgetID() ; boutons, zone de texte, ...
        Case 2
          Txt.s = OpenFileRequester("Ouvir", Fichier, "Vidéo|*.avi;*.mpg;*.wmv", 1)
          If Txt
            Fichier = Txt
            SetGadgetText(1, GetFilePart(Fichier))
          EndIf
      EndSelect
    EndIf
    
  Until Event = #PB_Event_CloseWindow
  
  If CreatePreferences("VidéoVeille.ini")
    WritePreferenceString("Vidéo", Fichier)
    WritePreferenceLong("Zoom", GetGadgetState(3))
    WritePreferenceLong("Volume", GetGadgetState(4))
    ClosePreferences()
  EndIf
  CloseWindow(0)
EndProcedure

OpenPreferences("VidéoVeille.ini")
Fichier.s = ReadPreferenceString("Vidéo", "")
Zoom.l = ReadPreferenceLong("Zoom", 1)
Volume.l = ReadPreferenceLong("Volume", 0)
ClosePreferences()

Param.s = Left(ProgramParameter(), 2)

; Param = "/c"

If Param = "/p"
  End
ElseIf Param = "/c" Or Fichier = ""
  Reglage()
  
  If Param = "/c" Or Fichier = ""
    End
  EndIf
EndIf

OpenWindow(0, 0, 0, 100, 100, #PB_Window_BorderLess | #PB_Window_Invisible, "VidéoVeille")

; Couleur de fond
CouleurFondFenetre = CreateSolidBrush_(0)
SetClassLong_(WindowID(0), #GCL_HBRBACKGROUND, CouleurFondFenetre)

HideWindow(0, 0) ; on montre la fenêtre

ShowWindow_(WindowID(), #SW_MAXIMIZE)

ShowCursor_(0)

InitMovie()
LoadMovie(0, Fichier)
TailleX = MovieWidth()
TailleY = MovieHeight()

If Zoom
  RapportVideo.f = TailleX / TailleY
  RapportEcran.f = WindowWidth() / WindowHeight()
  
  If RapportVideo >= RapportEcran
    TailleX = WindowWidth()
    TailleY = TailleX / RapportVideo
  Else
    TailleY = WindowHeight()
    TailleX = TailleY * RapportVideo
  EndIf
EndIf

ResizeMovie((WindowWidth() - TailleX) / 2, (WindowHeight() - TailleY) / 2, TailleX, TailleY)

PlayMovie(0, WindowID())

If Volume = 0
  MovieAudio(0, 0)
EndIf

Timer = SetTimer_(WindowID(), 0, 500, @ReLance())

x = WindowMouseX()
y = WindowMouseY()

Repeat
  Event = WaitWindowEvent()
  
Until Event = #PB_Event_CloseWindow Or WindowMouseX() <> x Or WindowMouseY() <> y

KillTimer_(WindowID(), Timer)
DeleteObject_(CouleurFondFenetre)

ShowCursor_(1)
c'est pas très commenté mais le code n'est pas compliqué.

Pour faire l'écran de veille :
- complier
- renommer l'exe en *.scr
- placer le fichier dans le dossier de windows
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]