VidéoVeille - Mettre une 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éoVeille - Mettre une vidéo en écran de veille

Message par Le Soldat Inconnu »

Salut,

un petit code tout bête qui permet de faire un écran de veille qui lit la vidéo de son choix.
compiler en exe avec l'extension *.scr
mettre dans le répertoire de win
aller dans les options d'affichage le choisir comme écran de veille
choisir la vidéo dans les param
et c'est tout

pour les fainéant, le fichier compilé est ici : http://perso.wanadoo.fr/lesoldatinconnu ... taires.htm

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)
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)]