Aide et conseils concernant AutoIt et ses outils.
franco
Niveau 7
Messages : 343 Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status :
Hors ligne
#1
Message
par franco » jeu. 23 mai 2024 14:31
Bonjour.
Pour faire simple, j'ai un projet en tête : extraire une partie d'une vidéo.
Jai donc intégré
Windows Media Player dans une GUI.
Et j'ai "redimensionné" en 1600 x 800 via GUICtrlCreateObj
Je voudrais donc
lancer une vidéo quelconque , mais dans la
résolution que j'ai moi-même fixé (1600x800).
Or,
quelque soit la vidéo choisie , elle se lance dans sa résolution native, et donc une
résolution trop élevée : les
contrôles de Windows Media player sont "cachées"
En gros : je voudrais
voir les contrôles de Windows Media Player .
Pour éviter de récupérer le début et la fin de l'extrait à l'aveuglette.
Comment faire ?
Voici le script :
► Afficher le texte script
#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> $Form1 = GUICreate ( "Form1" , 1800 , 890 , 192 , 124 ) GUICtrlCreateLabel ( "Fichier Vidéo" , 5 , 5 , 70 , 20 ) $ientree = GUICtrlCreateInput ( "" , 70 , 0 , 400 , 25 ) $ch_vid = GUICtrlCreateButton ( "..." , 480 , 0 , 25 , 25 ) $oWMP = ObjCreate ( "WMPlayer.OCX" ) GUICtrlCreateObj ( $oWMP , 0 , 40 , 1600 , 800 ) $oWMP . WindowlessVideo = False $oWMP . UIMode = "full" $oWMP . EnableContextMenu = False $oWMP . StretchToFit = True ; Cette ligne permet d'ajuster la vidéo à la taille de la fenêtre $oWMP . Settings . AutoStart = False $oWMP . Settings . EnableErrorDialogs = False $btn_debut = GUICtrlCreateButton ( "Début" , 5 , 850 , 120 , 20 ) GUISetState ( @SW_SHOW ) While 1 $nMsg = GUIGetMsg ( ) Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $ch_vid ; Create a constant variable in Local scope of the message to display in FileOpenDialog. Local $sMessage = "Choisissez un fichier vidéo...." ; Display an open dialog to select a file. Local $sFileOpenDialog = FileOpenDialog ( $sMessage , @DesktopDir & "\" , "All (*.*)" , 1 ) If @error Then GUICtrlSetData ( $ientree , "" ) Else GUICtrlSetData ( $ientree , $sFileOpenDialog ) $oWMP . Url = $sFileOpenDialog $oWMP . controls . play EndIf Case $btn_debut $debut = $oWMP . controls . currentPosition MsgBox ( 0 , "" , $debut ) EndSwitch WEnd
Merci à tous.
Bonne journée.
L'entraide, c'est mon dada
Nine
AutoIt MVPs (MVP)
Messages : 105 Enregistré le : ven. 17 avr. 2020 01:23
Localisation : Montréal, Québec
Status :
Hors ligne
#2
Message
par Nine » mar. 28 mai 2024 07:55
Voici un exemple simple pour ajuster les dimensions de l'OCX.
Code : Tout sélectionner
#include <Constants.au3>
#include <GUIConstantsEx.au3>
#include <StructureConstants.au3>
#include <WindowsConstants.au3>
Opt("MustDeclareVars", True)
Example()
Func Example()
Local $oPlayer = ObjCreate("WMPlayer.OCX")
GUICreate("Embedded Web control Test", 1000, 800)
GUICtrlCreateObj($oPlayer, 40, 40, 800, 600)
$oPlayer.Settings.Volume = 100
$oPlayer.uiMode = "none"
Local $sFullPath = "D:\Video\Alberta\Alberta.wmv"
GUISetState()
$oPlayer.URL = $sFullPath
While $oPlayer.playState = 9
Sleep(50)
WEnd
If $oPlayer.playState <> 3 Then Exit MsgBox($MB_SYSTEMMODAL, "Error", $sFullPath & " cannot be played")
ResizeOCX($oPlayer, 40, 40, 800, 600)
While True
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
If $oPlayer.playState <> 3 Then ExitLoop
WEnd
EndFunc ;==>Example
Func ResizeOCX($oObject, $iLeft, $iTop, $iRight, $iBottom)
Local Const $tagIOleInPlaceObj = _
"ContextSensitiveHelp hresult(int); " & _
"GetWindow hresult(ptr); " & _
"InPlaceDeactivate hresult(); " & _
"ReactivateAndUndo hresult(); " & _
"SetObjectRects hresult(ptr; ptr;); " & _
"UIDeactivate hresult();"
Local Static $oIInPlace = ObjCreateInterface($oObject, "{00000113-0000-0000-C000-000000000046}", $tagIOleInPlaceObj)
Local $tRect = DllStructCreate($tagRECT)
$tRect.Left = $iLeft
$tRect.Top = $iTop
$tRect.Right = $iRight
$tRect.Bottom = $iBottom
Local $pRect = DllStructGetPtr($tRect)
Local $iRes = $oIInPlace.SetObjectRects($pRect, $pRect)
ConsoleWrite($iRes & @CRLF)
EndFunc ;==>ResizeOCX