[..] 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 : 116
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
Avatar du membre
Anthony
Niveau 7
Niveau 7
Messages : 304
Enregistré le : lun. 17 janv. 2011 14:08
Localisation : France
Status : Hors ligne

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

#3

Message par Anthony »

Bonjour franco,

Ayant traité pas mal de scrips Avisynth je me demande si cette option de passer par un .avs ne bousterai pas les performances (utilisation du GPU).
çà fait quelques étapes de plus c'est certain mais je partirai sur quelque chose comme çà.
Voici une ébauche https://autoitscript.fr/forum/viewtopic.php?t=14886
J'ai été diagnostiqué pour trouble de la concentration, soyez indulgent
Merci à tous pour votre aide.
UDF: GuiStatusBarEx --- Une StatusBar complète, rapide et simple
Code: Code-Texte fusion --- Une GUI pour fusionner des GCodes pour CNC 3018
Répondre