[..] intégration de windows media player avec une résolution fixe

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
franco
Niveau 7
Niveau 7
Messages : 343
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

[..] intégration de windows media player avec une résolution fixe

#1

Message par franco »

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. :mrgreen:



Comment faire ?


Voici le script :
► Afficher le textescript
Merci à tous.
Bonne journée.
:D
L'entraide, c'est mon dada ;)
Avatar du membre
Nine
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 105
Enregistré le : ven. 17 avr. 2020 01:23
Localisation : Montréal, Québec
Status : Hors ligne

Re: [..] intégration de windows media player avec une résolution fixe

#2

Message par Nine »

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
Répondre