Question d'application plein écran (Vidéo player)

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
cage
Messages : 604
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Question d'application plein écran (Vidéo player)

Message par cage »

Bonsoir,

J'ai en cours de peaufinage une application de lecteur vidéo que je n'arrive pas a passer en vrai plein écran.
Pour cela, il me manque 2 choses:
1) masquer la barre des tâches
2) masquer la barre de titre de l'application
et bien sûr retour a la normale:
1) afficher la barre des tâches
2) afficher la barre de titre de l'application

Cela est-il possible avec PB nativement ou a l'aide des API Windows
Merci pour vos retours,
cage
Un exemple de code qui montre le besoin (dans les commentaires).

Code : Tout sélectionner

EnableExplicit

#WIN=0
#FLAGS=#PB_Window_ScreenCentered|#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget|#PB_Window_SizeGadget

Define Event,indexMenu,indexGadget,indexGadgetType

OpenWindow(#WIN,#PB_Any,#PB_Any,800,600,"Mon application",#FLAGS)

Repeat
  Event=WaitWindowEvent(50)
  Select Event
    ;=== EVENTS SOURIS ===
    Case #WM_LBUTTONUP     : Debug "LEFT BUTTON UP"
    Case #WM_LBUTTONDOWN   : Debug "LEFT BUTTON DOWN"
    Case #WM_LBUTTONDBLCLK : Debug "LEFT BUTTON DBLCLK"
    Case #WM_RBUTTONUP     : Debug "RIGHT BUTTON UP"
    Case #WM_RBUTTONDOWN   : Debug "RIGHT BUTTON DOWN"
    Case #WM_RBUTTONDBLCLK : Debug "RIGHT BUTTON DBLCLK"
    ;=== EVENTS MENUS ===
    Case #PB_Event_Menu
      indexMenu = EventMenu()
      Select indexMenu
        ;Case ...
      EndSelect
    ;=== EVENTS GADGETS ===
    Case #PB_Event_Gadget
      indexGadget     = EventGadget()
      indexGadgetType = EventType()
      Select indexGadget
        ;Case OneGadget
          ;Select indexGadgetType
           ;Case OneGadgetType
      EndSelect
    ;=== EVENTS SYSTÈMES ===
    Case #PB_Event_ActivateWindow   : Debug "ACTIVATE WINDOW"   ; la fenêtre a le focus
    Case #PB_Event_DeactivateWindow : Debug "DEACTIVATE WINDOW" ; la fenêtre perd le focus
    Case #PB_Event_RestoreWindow    : Debug "RESTORE WINDOW"
    Case #PB_Event_MaximizeWindow   : Debug "MAXIMIZE WINDOW"
      Debug "Action a faire lorsqu'on maximise la fenêtre"
      ;1) masquer la barre des tâches
      ;2) masquer la barre de titre de l'application
    Case #PB_Event_MinimizeWindow   : Debug "MINIMIZE WINDOW"
      Debug "Action a faire lorsqu'on minimise la fenêtre"
      ;1) afficher la barre des tâches
      ;2) afficher la barre de titre de l'application
    Case #PB_Event_SizeWindow       : Debug "SIZE WINDOW"
      Debug "Action a faire lorsqu'on redimensionne la fenêtre"
    Case #PB_Event_CloseWindow      : Debug "CLOSE WINDOW"
      ;1) afficher la barre des tâches
      Break
  EndSelect
ForEver
Dernière modification par cage le mar. 15/oct./2024 17:41, modifié 1 fois.
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Avatar de l’utilisateur
cage
Messages : 604
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: Question d'application plein écran

Message par cage »

Bonjour a tous,

Merci Mesa
Toujours heureux de voir qu'il y a une bonne âme pour nous mettre sur la bonne voix.

Pour qui peut-être intéressé, voici le code complet de mon application myVideoPlayer

Télécharger le projet myVideoPlayer sur pbcage.free.fr menu myvideoplayer

ou directement sur la page MyVideoPlayer

Structure du projet:
.\icones\
.\icones\myVideoPlayer.ico
.\lib\
.lib\libvlc.pb
.lib\vlc.pb
.\myVideoPlayer.exe
.\myVideoPlayer.pb
.\myVideoPlayer.pbp
.\x64\
.\x64\myVideoPlayer.exe
.\x86\
.\x86\myVideoPlayer.exe

Tout d'abord, le fichier myVideoPlayer.pbp

Code : Tout sélectionner

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://www.purebasic.com/namespace" version="1.0" creator="PureBasic 6.12 LTS (Windows - x64)">
  <section name="config">
    <options closefiles="1" openmode="1" name="myVideoPlayer.pbp"/>
    <buildwindow autoclose="1"/>
  </section>
  <section name="data">
    <explorer view="..\" pattern="0"/>
    <log show="1"/>
    <lastopen date="2024-10-15 12:34" user="admin" host="EBCAGE"/>
  </section>
  <section name="files">
    <file name="myVideoPlayer.pb">
      <config load="1" scan="1" panel="1" warn="1" lastopen="1" sortindex="1" panelstate="+"/>
      <fingerprint md5="7d9d05edc33837a82a30d00aafb3359a"/>
    </file>
  </section>
  <section name="targets">
    <target name="Default Target" enabled="1" default="1">
      <inputfile value="myVideoPlayer.pb"/>
      <outputfile value="myVideoPlayer.exe"/>
      <compiler version="PureBasic 6.12 LTS (Windows - x64)"/>
      <commandline value="https://dhx-caillou-2-eu.rakuten.wurl.tv/playlist.m3u8"/>
      <executable value="myVideoPlayer.exe"/>
      <options unicode="1" thread="1" xpskin="1" dpiaware="1" dllprotection="1" debug="1" optimizer="1"/>
      <purifier enable="1"/>
      <temporaryexe value="source"/>
      <icon enable="1">icones\myVideoPlayer.ico</icon>
      <versioninfo enable="1">
        <field0 value="24,10,0,14"/>
        <field1 value="24,10,0,14"/>
        <field2 value="CAGE"/>
        <field3 value="myVideoPlayer"/>
        <field4 value="24.10.14"/>
        <field5 value="24.10.14"/>
        <field6 value="myVideoPlayer - Video utility by CAGE"/>
        <field7 value="myVideoPlayer.exe"/>
        <field8 value="myVideoPlayer.exe"/>
        <field9 value="© CAGE"/>
        <field10 value="This software is the property of the author : CAGE"/>
        <field11 value="0"/>
        <field12 value="0"/>
      </versioninfo>
    </target>
    <target name="Default Target (x64)" enabled="1" default="0">
      <inputfile value="myVideoPlayer.pb"/>
      <outputfile value="x64\myVideoPlayer.exe"/>
      <compiler version="PureBasic 6.12 LTS (Windows - x64)"/>
      <executable value="x64\myVideoPlayer.exe"/>
      <options unicode="1" thread="1" xpskin="1" dpiaware="1" dllprotection="1" debug="1" optimizer="1"/>
      <purifier enable="1"/>
      <temporaryexe value="source"/>
      <icon enable="1">icones\myVideoPlayer.ico</icon>
      <versioninfo enable="1">
        <field0 value="24,10,0,14"/>
        <field1 value="24,10,0,14"/>
        <field2 value="CAGE"/>
        <field3 value="myVideoPlayer"/>
        <field4 value="24.10.14"/>
        <field5 value="24.10.14"/>
        <field6 value="myVideoPlayer - Video utility by CAGE"/>
        <field7 value="myVideoPlayer.exe"/>
        <field8 value="myVideoPlayer.exe"/>
        <field9 value="© CAGE"/>
        <field10 value="This software is the property of the author : CAGE"/>
        <field11 value="0"/>
        <field12 value="0"/>
      </versioninfo>
    </target>
    <target name="Default Target (x86)" enabled="1" default="0">
      <inputfile value="myVideoPlayer.pb"/>
      <outputfile value="x86\myVideoPlayer.exe"/>
      <compiler version="PureBasic 6.12 LTS (Windows - x86)"/>
      <executable value="x86\myVideoPlayer.exe"/>
      <options unicode="1" thread="1" xpskin="1" dpiaware="1" dllprotection="1" debug="1" optimizer="1"/>
      <purifier enable="1"/>
      <temporaryexe value="source"/>
      <icon enable="1">icones\myVideoPlayer.ico</icon>
      <versioninfo enable="1">
        <field0 value="24,10,0,14"/>
        <field1 value="24,10,0,14"/>
        <field2 value="CAGE"/>
        <field3 value="myVideoPlayer"/>
        <field4 value="24.10.14"/>
        <field5 value="24.10.14"/>
        <field6 value="myVideoPlayer - Video utility by CAGE"/>
        <field7 value="myVideoPlayer.exe"/>
        <field8 value="myVideoPlayer.exe"/>
        <field9 value="© CAGE"/>
        <field10 value="This software is the property of the author : CAGE"/>
        <field11 value="0"/>
        <field12 value="0"/>
      </versioninfo>
    </target>
  </section>
</project>
et le fichier myVideoPlayer.pb (le principal)

Code : Tout sélectionner

;
;************************************************************************
;Titre      : myVideoPlayer.pb
;Auteur     : (C) 2024 CAGE
;Date       : 2024/10/15
;Version PB : PureBasic 6.12 LTS (Windows - x86)
;Version PB : PureBasic 6.12 LTS (Windows - x64)
;Compiler Options
;Compiler Options : [x] Executable format: Windows
;Compiler Options : [x] Create threadsafe executable
;Compiler Options : [x] Enable moderm theme support (for Windows X and above)
;Compiler Options : [x] Enable DPI aware executable (Windows)
;Compiler Options : [x] Enable DLL preloading protection (Windows)
;Compile/Run      : [x] Create temporary executable in the source directory
;
;Libairies: https://www.mediafire.com/file/jkqzr8sf8nxvkfr/pb.zip/file
;
;https://github.com/deseven/pbsamples/tree/master/crossplatform/libcurl
;************************************************************************
;
;Mes remerciement a CELTIC88 pour son post qui date du 3 Septembre 2021
;Voir https://www.purebasic.fr/english/viewtopic.php?t=77848
;
;Mes remerciement aussi pour:
;https://www.purebasic.fr/english/viewtopic.php?p=587630
;https://www.purebasic.fr/english/viewtopic.php?p=547029
;https://www.purebasic.fr/english/viewtopic.php?t=49471
;
;VLC x86/x64 a télécharger ici https://www.videolan.org/vlc/
;Il est possible d'installer les 2 versions
;
;Autres liens:
;https://wiki.videolan.org/LibVLC
;https://www.videolan.org/vlc/libvlc.html
;https://videolan.videolan.me/vlc/group__libvlc.html
;
;Mon post:
;https://www.purebasic.fr/french/viewtopic.php?t=19257

EnableExplicit

CompilerSelect #PB_Compiler_Thread
  CompilerCase #False
    CompilerError "L'option 'Activer la gestion des thread' doit etre activée."
  CompilerDefault
CompilerEndSelect

CompilerSelect #PB_Compiler_EnableExplicit
  CompilerCase #False
    CompilerError "EnableExplicit doit etre indiqué."
  CompilerDefault
CompilerEndSelect

CompilerSelect #PB_Compiler_ExecutableFormat
  CompilerCase #PB_Compiler_Executable
  CompilerDefault
    CompilerError "L'option 'Format de l'exécutable:' doit être positionnée sur 'Windows'"
CompilerEndSelect

CompilerSelect #PB_Compiler_Processor
  CompilerCase #PB_Processor_x86
    #PROCESSOR="(x86)"
    Define libvlc$="C:\Program Files (x86)\VideoLAN\VLC\libvlc.dll"
  CompilerCase #PB_Processor_x64
    #PROCESSOR="(x64)"
    Define libvlc$="C:\Program Files\VideoLAN\VLC\libvlc.dll"
  CompilerDefault
    End
CompilerEndSelect

OnErrorGoto(?ErrorHandler)

Global AppPath$ = GetPathPart(ProgramFilename())

SetCurrentDirectory(AppPath$)

EnableDebugger

CompilerIf #PB_Compiler_Debugger
  Procedure.a folderExist(f$)
    If FileSize(f$) = -2
      ProcedureReturn #True
    Else
      ProcedureReturn #False
    EndIf
  EndProcedure
  Define f$
  f$ = "x64"
  If Not folderExist(f$)
    If Not CreateDirectory(f$)
      End
    EndIf
  EndIf
  f$ = "x86"
  If Not folderExist(f$)
    If Not CreateDirectory(f$)
      End
    EndIf
  EndIf
CompilerEndIf

CompilerIf #PB_Compiler_Debugger
  ;;; Nous sommes dans l'IDE
  #WinApp = 123
CompilerElse
  #WinApp = 99
CompilerEndIf

DisableDebugger

Enumeration Menus
  #escp
  #help
  #hide
  #kf10
  #kf11
  #mute
  #pause
  #play
  #popup
  #quit
  #save
  #scale
  #show
  #stop
  #vers
  #voldown
  #volup
EndEnumeration

Enumeration Gadgets
  #canvas
EndEnumeration

IncludeFile "lib\vlc.pb"

EnableExplicit

#WinAppTitle="myVideoPlayer v24.10.15 "+#PROCESSOR

Procedure.a appQuit()
  Protected response, msgflags, message$
  response = #PB_MessageRequester_Yes
  msgflags = #PB_MessageRequester_YesNo|#PB_MessageRequester_Warning
  
  message$ = "Voulez vous fermer l'application ?"
  response = MessageRequester(#WinAppTitle,message$,msgflags)
  
  If response = #PB_MessageRequester_Yes
    ProcedureReturn #True
  Else
    ProcedureReturn #False
  EndIf
EndProcedure

Procedure.a GetAutoHideTaskBar()
  ;#Null            ; 0 = #False
  ;#ABS_AUTOHIDE    ; 1 = #True
  Protected State.APPBARDATA
  
  ProcedureReturn SHAppBarMessage_(#ABM_GETSTATE, State)
EndProcedure

Procedure.a SetAutoHideTaskBar(state)
  ;#Null            ; 0 = #False
  ;#ABS_AUTOHIDE    ; 1 = #True
  Protected TaskBar, tbdata.AppBarData
  
  TaskBar = FindWindow_("Shell_TrayWnd",0)
  tbdata.AppBarData
  tbdata\cbSize = SizeOf(tbdata)
  tbdata\hwnd = TaskBar
  tbdata\lParam = state
  
  ProcedureReturn SHAppBarMessage_(#ABM_SETSTATE,@tbdata)
EndProcedure

Procedure.a fileExist(f$)
  If FileSize(f$) < 0
    ProcedureReturn #False
  Else
    ProcedureReturn #True
  EndIf
EndProcedure

If fileExist(libvlc$)
  vlc_loadlibvlc(libvlc$) ; select vlc dll
Else
  MessageRequester(#WinAppTitle,"Vous devez installer VLC "+#PROCESSOR+" depuis www.videolan.org",#PB_MessageRequester_Ok|#PB_MessageRequester_Error)
  End
EndIf

Define count = CountProgramParameters()

Global source$, titre$="Vidéo"

Select count
  Case 1  : source$ = ProgramParameter(0)
  Case 2  : source$ = ProgramParameter(0) : titre$  = GetFilePart(ProgramParameter(1))
  Default : End
EndSelect

;Pour tester
CompilerIf #PB_Compiler_Debugger
  ;;; Nous sommes dans l'IDE
  source$="https://dhx-caillou-2-eu.rakuten.wurl.tv/playlist.m3u8"
CompilerEndIf

source$=Trim(source$)
titre$ =Trim(titre$)

#bgcolor = #Black ; bgcolor = RGB(0,0,0)
#fgcolor = #White ; fgcolor = RGB(255,255,255)

#MINI=0
#MAXI=100
#HK_ALTV=$456 ; Alt + V

Define W=800, H=500

Define version$=vlc_version()

Define TB_INITIAL_STATE=GetAutoHideTaskBar()

If OpenWindow(#WinApp,0,0,W,H,"VLC "+version$+" "+#PROCESSOR+" :: "+titre$,#PB_Window_ScreenCentered|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget)
  SetWindowColor(#WinApp,#bgcolor)
  
  CanvasGadget(#canvas,0,0,W,H,#PB_Canvas_Container)
  
  StartDrawing(CanvasOutput(#canvas))
  ;; on rempli le fond du canvas avec la couleur #bgcolor
  FillArea(#canvas, 0, 0,#bgcolor)
  StopDrawing()
  
  CloseGadgetList()
  
  If CreatePopupImageMenu(#popup)
    MenuItem(#mute , "Couper/remettre le son"      +Chr(9)+"M")
    MenuItem(#pause, "Arrêter/reprendre la lecture"+Chr(9)+"Pause")
    MenuBar()
    MenuItem(#save , "Enregistrer la vidéo"        +Chr(9)+"Ctrl+E")
    MenuBar()
    MenuItem(#help , "Affiche ce menu"             +Chr(9)+"F1")
    MenuItem(#kf10 , "Affiche la vidéo au format"  +Chr(9)+"F10")
    MenuItem(#kf11 , "Affiche la vidéo plein écran"+Chr(9)+"F11")
    MenuBar()
    MenuItem(#hide , "Réduire l'application"       +Chr(9)+"Esc")
    MenuItem(#show , "Réafficher l'application"    +Chr(9)+"Alt+V")
    MenuBar()
    MenuItem(#quit , "Fermer le lecteur vidéo"     +Chr(9)+"Q ou X")
    MenuBar()
    MenuItem(#escp , "Fermer ce menu")
  EndIf
  
  Define vlc
  
  vlc = vlc_createplayer(GadgetID(#canvas),1)
  
  vlc_setvolume(vlc,#MAXI)
  
  vlc_play(vlc,source$)

  AddKeyboardShortcut(#WinApp, #PB_Shortcut_Escape, #hide)   ; réduire l'application dans la barre de tâche
  AddKeyboardShortcut(#WinApp, #PB_Shortcut_Control+#PB_Shortcut_E, #save) ; enregistrer
  AddKeyboardShortcut(#WinApp, #PB_Shortcut_F    , #scale) ; scale
  AddKeyboardShortcut(#WinApp, #PB_Shortcut_M    , #mute)  ; mute
  AddKeyboardShortcut(#WinApp, #PB_Shortcut_Q    , #quit)  ; quit
  AddKeyboardShortcut(#WinApp, #PB_Shortcut_X    , #quit)  ; quit
  AddKeyboardShortcut(#WinApp, #PB_Shortcut_V    , #vers)  ; version
  ;
  AddKeyboardShortcut(#WinApp, #PB_Shortcut_Pause, #pause) ; met en pause la vidéo
  AddKeyboardShortcut(#WinApp, #PB_Shortcut_Home , #play)  ; relance la vidéo
  AddKeyboardShortcut(#WinApp, #PB_Shortcut_End  , #stop)  ; arrête la vidéo
  ;
  ;Touches dédiées au réglage du volume
  AddKeyboardShortcut(#WinApp, #VK_VOLUME_DOWN   , #voldown) ; diminue le volume
  AddKeyboardShortcut(#WinApp, #VK_VOLUME_UP     , #volup)   ; augmente le volume
  AddKeyboardShortcut(#WinApp, #VK_VOLUME_MUTE   , #mute)    ; augmente le volume
  ;
  ;Touches génériques pour le réglage du volume
  AddKeyboardShortcut(#WinApp, #PB_Shortcut_Left , #voldown) ; diminue le volume
  AddKeyboardShortcut(#WinApp, #PB_Shortcut_Right, #volup)   ; augmente le volume
  ;
  ;Touches génériques pour le réglage du volume
  AddKeyboardShortcut(#WinApp, #PB_Shortcut_Up   , #volup)   ; augmente le volume
  AddKeyboardShortcut(#WinApp, #PB_Shortcut_Down , #voldown) ; diminue le volume
  ;
  AddKeyboardShortcut(#WinApp, #PB_Shortcut_F1   , #help)  ; Affiche le popup
  AddKeyboardShortcut(#WinApp, #PB_Shortcut_F10  , #kf10)  ; Affiche la vidéo au format
  AddKeyboardShortcut(#WinApp, #PB_Shortcut_F11  , #kf11)  ; Affiche la fenêtre en plein écran
  
  Define hWnd,RetVal
  
  hWnd=WindowID(#WinApp)
  
  RetVal = SendMessage_(hWnd, #WM_SETHOTKEY, #HK_ALTV, 0) ; Alt + V $456
  
  If RetVal
    DefWindowProc_(hWnd,#WM_SHOWWINDOW, 0, 0)
  EndIf
  
  Define Event,indexGadget,valeur,indexGadgetType,indexMenu
  
  Define volume=#MAXI,scale=#False,fullscr=#False
  
  Repeat
    Event = WaitWindowEvent(50)
    Select Event
        ;====================
        ;=== EVENTS MENUS ===
        ;====================
      Case #WM_LBUTTONDOWN
        ;
      Case #WM_RBUTTONDOWN
        DisplayPopupMenu(#popup,WindowID(#WinApp),GadgetX(#canvas,#PB_Gadget_ScreenCoordinate),GadgetY(#canvas,#PB_Gadget_ScreenCoordinate))
      Case #PB_Event_Menu
        indexMenu = EventMenu()
        Select indexMenu
          Case #help
            DisplayPopupMenu(#popup,WindowID(#WinApp),GadgetX(#canvas,#PB_Gadget_ScreenCoordinate),GadgetY(#canvas,#PB_Gadget_ScreenCoordinate))
          Case #hide
            SetWindowState(#WinApp, #PB_Window_Minimize)
          Case #show
            SetWindowState(#WinApp, #PB_Window_Normal)
          Case #mute
           ;vlc_setvolume(vlc,#MINI)
            vlc_onoffsound(vlc)
          Case #pause
            vlc_pauseplay(vlc)
          Case #play
            vlc_play(vlc,source$)
          Case #save
            RunProgram("myVideoDownloader.exe",Chr(34)+source$+Chr(34)+" "+Chr(34)+titre$+Chr(34),#Empty$)
          Case #kf11
            fullscr=Bool(fullscr=0)
            If fullscr
              fullscr=#True
              If GetAutoHideTaskBar()=#False
                SetAutoHideTaskBar(#True)
              EndIf
             ;vlc_setvideoscale(vlc,fullscr)
              SetWindowState(#WinApp, #PB_Window_Maximize)
              SetWindowLong_(hWnd, #GWL_STYLE, GetWindowLong_(hWnd, #GWL_STYLE)&~#WS_CAPTION&~#WS_SIZEBOX)
              ResizeGadget(#canvas,0,0,WindowWidth(#WinApp,#PB_Window_FrameCoordinate),WindowHeight(#WinApp,#PB_Window_FrameCoordinate))
            Else
              fullscr=#False
              SetAutoHideTaskBar(TB_INITIAL_STATE)
              vlc_setvideoscale(vlc,fullscr)
              ShowWindow_(WindowID(#WinApp), #SW_SHOWNORMAL)
              SetWindowLong_(hWnd, #GWL_STYLE, GetWindowLong_(hWnd, #GWL_STYLE)|#WS_CAPTION|#WS_SIZEBOX)
            EndIf
          Case #scale
             ; Met la fenêtre en plein écran
            SetWindowState(#WinApp, #PB_Window_Maximize)
            scale=Bool(scale=0)
            vlc_setvideoscale(vlc,scale)
          Case #stop
            vlc_stopplayer(vlc)
          Case #vers
            MessageRequester(#WinAppTitle,"VLC version "+vlc_version())
          Case #kf10
            Define vw=vlc_getvideowidth(vlc)
            Define vh=vlc_getvideoheight(vlc)
            If vw>100 And vh>100
              ResizeWindow(#WinApp,#PB_Ignore,#PB_Ignore,vw,vh)
            EndIf
          Case #voldown
            RunProgram("sndvol.exe","-f " + Str(65536*DesktopMouseY() + DesktopMouseX()),"")
            If volume > 0
              volume-1
              vlc_setvolume(vlc,volume)
            EndIf
          Case #volup
            RunProgram("sndvol.exe","-f " + Str(65536*DesktopMouseY() + DesktopMouseX()),"")
            If volume < 100
              volume+1
              vlc_setvolume(vlc,volume)
            EndIf
          Case #quit
            If appQuit() : Break : EndIf
        EndSelect
        ;=====================
        ;=== EVENTS GADGET ===
        ;=====================
      ;Case #PB_Event_Gadget
      ;  indexGadget     = EventGadget()
      ;  indexGadgetType = EventType()
      ;  Select indexGadget
      ;    Case #canvas
      ;      Select indexGadgetType
      ;        Case #PB_Event_LeftClick
      ;          DisplayPopupMenu(#popup,WindowID(#WinApp))
      ;      EndSelect
      ;  EndSelect
        ;=======================
        ;=== EVENTS SYSTEMES ===
        ;=======================
      Case #PB_Event_MaximizeWindow
        ;vlc_setvideoscale(vlc,#True)
      Case #PB_Event_SizeWindow
        Debug "size windows"
        scale=#False
        vlc_setvideoscale(vlc,scale)
        ResizeGadget(#canvas,#PB_Ignore,#PB_Ignore,WindowWidth(#winapp,#PB_Window_FrameCoordinate),WindowHeight(#WinApp,#PB_Window_FrameCoordinate))
      Case #PB_Event_CloseWindow
        SetWindowState(#WinApp, #PB_Window_Minimize)
    EndSelect
  ForEver
EndIf

vlc_freeplayer(vlc)

SetAutoHideTaskBar(TB_INITIAL_STATE)

ErrorHandler:

End
Utilisation de myVideoPlayer une fois compilé:
myVideoPlayer "@ du flux vidéo local ou internet" "Titre de la vidéo"

F11 permet de passer/sortir du mode plein écran
F1 ou clic droit sur la vidéo affiche le menu de l'application
ESC réduit l'application dans la barre des tâches
Alt+V affiche l'application a l'écran après réduction dans la bt
M coupe le son
V affiche la version de VLC
fléche haut/fléche bas pour augmenter/réduire le volume
Vous trouverez dans le code les autres touches utilisées.

Ce code n'est pas forcément finalisé, aussi tout retour (améliorations, critiques, suggestions,...) sera apprécié.

Merci de m'avoir lu,
cage
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Avatar de l’utilisateur
cage
Messages : 604
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: Question d'application plein écran (Vidéo player)

Message par cage »

Bonsoir,

Le projet est téléchargeable sur pbcage.free.fr ou sur la page myvideoplayer

[Édit: version v24.10.28]
cage
Dernière modification par cage le lun. 28/oct./2024 21:59, modifié 1 fois.
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Avatar de l’utilisateur
SPH
Messages : 4942
Inscription : mer. 09/nov./2005 9:53

Re: Question d'application plein écran (Vidéo player)

Message par SPH »

Merci cage.

J'ai été voir sur ta page : il y a plein de choses a DL apparement. Félicitation.

Pour ce qui est de ton code, je l'ai DL (l'exe) mais il ne fait rien...
Pourtant, j'ai la derniere version de VLC.

J'ai alors DL les .PB mais je suis sous pb6.11 et il faut apparement la 6.12...

Bref, pas facile...

Mais merci de faire vivre le forum FR :wink:

===

PS : j'ai pu lancer ton code VLC sous PB6.12

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
cage
Messages : 604
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: Question d'application plein écran (Vidéo player)

Message par cage »

Bonjour SPH,

Pour utiliser l'application compilée ou pas, il existe un prérequis important.

Pour Windows 32-bit : installer vlc-win32
Pour Windows 64-bit : installer vlc-win64

Pour Windows 64-bit, il est possible d'installer les 2 versions de VLC
Ça permet de tester l'application avec PB 32-bit et PB 64-bit

Syntaxe pour utiliser l'application compilée:
myVideoPlayer.exe "Adresse-de-la-source-vidéo" "Titre-de-la-vidéo"

Voici un exemple fonctionnel:
myVideoPlayer.exe "https://embed.koreus.com/00071/200805/b ... -bunny.mp4" "Big Buck Bunny"

Effectivement, j'utilise PB version 6.12 mais je ne crois pas que ça ne puisse pas fonctionner avec la 6.11
Il n'y a rien de particulier dans le code qui pourrait expliquer que tu ne puisse utiliser la 6.11

Dans tous les cas, merci d'avoir pris le temps de tester.

J'ai modifié la page de l'application sur mon site pour expliciter l'utilisation de l'appli.
cage
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Avatar de l’utilisateur
ZapMan
Messages : 460
Inscription : ven. 13/févr./2004 23:14
Localisation : France
Contact :

Re: Question d'application plein écran (Vidéo player)

Message par ZapMan »

En ce qui me concerne, ça s'interrompt (end) là-dessus :

Code : Tout sélectionner

Select count
  Case 1  : source$ = ProgramParameter(0)
  Case 2  : source$ = ProgramParameter(0) : titre$  = GetFilePart(ProgramParameter(1))
  Default : End
EndSelect
Une idée ?
Tout obstacle est un point d'appui potentiel.

Bibliothèques PureBasic et autres codes à télécharger :https://www.editions-humanis.com/downlo ... ads_FR.htm
Avatar de l’utilisateur
cage
Messages : 604
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: Question d'application plein écran (Vidéo player)

Message par cage »

Bonsoir ZapMan,

Je viens de découvrir a l'instant ton message, désolé.
Si compilé, a utiliser comme suit:
Utilisation de myVideoPlayer une fois compilé:
myVideoPlayer "@ du flux vidéo local ou internet" "Titre de la vidéo"
Je viens de télécharger les sources et de lancer "myVideoPlayer.pbp" et non pas "myVideoPlayer.pb"
La vidéo "CAILLOU" s'affiche bien.
Je ne sais pas si ça répond a ta question.
Merci d'avoir essayé.
cage
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Avatar de l’utilisateur
ZapMan
Messages : 460
Inscription : ven. 13/févr./2004 23:14
Localisation : France
Contact :

Re: Question d'application plein écran (Vidéo player)

Message par ZapMan »

OK, j'ai fini par comprendre que le seul moyen de lancer l'appli était de faire un drag'n drop de fichier dessus. Personnellement, au lieu de quitter quand l'appli n'a pas reçu de paramètre, j'aurais ouvert une fenêtre demandant à l'utilisateur s'il voulait ouvrir une vidéo...
D'autre part, quand on ferme la fenêtre avec la croix, cela ne ferme pas la vidéo, ce qui est un peu déstabilisant. Le seul moyen est de faire Q ou X. Bon, quand on le sait, ça va, et tu avais peut-être une raison pour faire comme ça.
Et dernière chose : je n'ai pas compris à quoi servait la commande "Enregistrer la vidéo", même en regardant le code.

Pour le reste, ça tourne au poil. Pas de bug, pas de message d'erreur. Je suis sur Windows 11 - x64, sans carte graphique.
Beau boulot, bien propre, et bel exemple pour le jour où j'aurais besoin d'une interface avec VLC.
Tout obstacle est un point d'appui potentiel.

Bibliothèques PureBasic et autres codes à télécharger :https://www.editions-humanis.com/downlo ... ads_FR.htm
Avatar de l’utilisateur
cage
Messages : 604
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: Question d'application plein écran (Vidéo player)

Message par cage »

Bonsoir ZapMan,
Merci pour ton retour.
OK, j'ai fini par comprendre que le seul moyen de lancer l'appli était de faire un drag'n drop de fichier dessus. Personnellement, au lieu de quitter quand l'appli n'a pas reçu de paramètre, j'aurais ouvert une fenêtre demandant à l'utilisateur s'il voulait ouvrir une vidéo...
D'autre part, quand on ferme la fenêtre avec la croix, cela ne ferme pas la vidéo, ce qui est un peu déstabilisant. Le seul moyen est de faire Q ou X. Bon, quand on le sait, ça va, et tu avais peut-être une raison pour faire comme ça.
Et dernière chose : je n'ai pas compris à quoi servait la commande "Enregistrer la vidéo", même en regardant le code.
Je me suis fait une application "myPlayerIPTV" qui me permet d'accéder a des milliers de vidéos ou chaines TV en ligne.
Quand je sélectionne une vidéo, je peux la visionner avec plusieurs lecteurs vidéo (vlc,mpc,mpc-be,mpc-hc,mpv,...) a sélectionner dans le menu Lecteurs. J'ai donc créé ce lecteur vidéo pour simplifier l'utilisation de l'appli IPTV. Quand je double clique sur une vidéo, le lien et le titre sont passés en arguments au lecteur vidéo. Si je clique sur Télécharger, ça ouvre une application myVideoDownloader qui enregistre la vidéo en cours de lecture. Je peux fermer le lecteur, la vidéo continue a être enregistrée. Je peux aussi tout simplement choisir d'enregistrer depuis le lecteur IPTV sans ouvrir la vidéo.
Au final, j'ai plusieurs applis qui sont faites pour fonctionner ensemble.
soit
myPlayerIPTV ---> myVideoPlayer ---> myVideoDownloader pour un lien direct vers une vidéo (mp4 par exemple) (enregistrer en regardant)
soit
myPlayerIPTV ---> myVideoDownloader pour un lien direct vers une vidéo (mp4 par exemple) (enregistrer sans regarder)
soit
myPlayerIPTV ---> myWebPlayer pour un lien direct vers une vidéo a regarder dans un navigateur
soit
myPlayerIPTV ---> myRadioPlayer ---> myRadioDownloader pour un lien direct vers une radio (enregistrer en écoutant)
soit
myPlayerIPTV ---> myRadioDownloader pour un lien direct vers une radio (enregistrer sans écouter)

Image

Image

Image

J'ai modifié pas mal l'appli myVideoPlayer et je la mettrais a disposition dés que finalisée.
Ce soir peut-être.
Le clic sur la croix demande ce que l'on veut faire maintenant.
cage
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Avatar de l’utilisateur
ZapMan
Messages : 460
Inscription : ven. 13/févr./2004 23:14
Localisation : France
Contact :

Re: Question d'application plein écran (Vidéo player)

Message par ZapMan »

Un pro du screen !!!
PureBasic est vraiment parfait pour répondre à ce genre de besoin.
Chapeau.
Tout obstacle est un point d'appui potentiel.

Bibliothèques PureBasic et autres codes à télécharger :https://www.editions-humanis.com/downlo ... ads_FR.htm
Avatar de l’utilisateur
cage
Messages : 604
Inscription : ven. 16/oct./2015 18:22
Localisation : France
Contact :

Re: Question d'application plein écran (Vidéo player)

Message par cage »

Effectivement, PureBasic est vraiment fait pour se créer des applications de ce type.
Venant de VB, j'ai eu un peu de mal a faire la bascule et au départ, je ne voyais que les manques par rapport a VB.
Aujourd'hui, je ne vois que les plus et je ne reviendrai pas en arrière.

Ceci dit, j'ai mis la page de téléchargement à jour avec la dernière version (v24.10.28) des sources et exécutables.

cage
■ Win10 Pro 64-bit (Intel Celeron CPU N2920 @ 1.86GHz, 4,0GB RAM, Intel HD Graphics) & PB 6.12 LTS
■ Vivre et laisser vivre.
■ PureBasic pour le fun
■ Gérard sur le forum Anglais
■ Mes sites: http://pbcage.free.fr - http://yh.toolbox.free.fr
Répondre