Войти

Показать полную графическую версию : [решено] Создать окно WMP в GUI


beve
08-07-2009, 15:44
Как создать такое окно проигрователя WMP в GUI, как на скриншоте:
http://moemesto.ru/beve/file/3206182/2009-07-08_122401.jpg
А также возможность возпроизвести в этом окне проигрователя WMP некоторый URL-поток по нажатию на кнопку-ссылку (этой ссылкой может быть к примеру:вот эта (http://www.vefire.ru/channel/oneplusone/asx/)

Creat0R
08-07-2009, 16:21
Вот тут (http://www.autoitscript.com/forum/index.php?showtopic=69509&view=findpost&p=510851) есть нечто подобное.

Ну и можно ещё покапаться в результатах поискового запроса (http://www.autoitscript.com/forum/index.php?app=core&module=search&section=search&do=quick_search&search_app=core&fromsearch=1&search_filter_app%5Ball%5D=1&search_term=embed%20+wmp&search_author=&search_date_start=&search_date_end=&submit=Perform+the+search) на офф. форуме.

Yashied
08-07-2009, 16:56
Так же обрати внимание на это (http://www.autoitscript.com/forum/index.php?showtopic=97487).

beve
09-07-2009, 01:07
Спасибо, вроде просто, а весь вечер ходил и изучал...по ссылках. Нашел несложный вариант, все то что нужно, но вот проблема с размерами окна wmp. При запуске оно одних размеров, при воспроизведении видеопотока(станция 1 и 2) - уже другие размеры (и причем свой размер у каждой станции), а при воспроизведении аудиопотока(станция3) - опять уменьшается. Помогите, как сделать, чтоб окно всегда было одного размера (и при запуске, и при разном воспроизведении, где то 350x350, ну не меньше). Вот код:
#include <GUIConstants.au3>

HotKeySet('{F9}', '_volMinus') ;уменьшить звук
HotKeySet('{F10}', '_volPlus') ;увеличить звук

Global $nocontrols=false

$hGui = GUICreate("Test", 518, 439, 192, 125)

$ControlPanel_ShowHide_But=GUICtrlCreateButton("Hide",5,370,50,25)
$StopPlay_But=GUICtrlCreateButton("Stop",55,370,50,25)
$FullScreen_But=GUICtrlCreateButton("fullscreen",105,370,50,25)
$Stantion1_But=GUICtrlCreateButton("Station1",155,370,50,25)
$Stantion2_But=GUICtrlCreateButton("Station2",205,370,50,25)
$Stantion3_But=GUICtrlCreateButton("Station3",255,370,50,25)

$wmp = _wmpcreate(1, 5, 5, 360, 360);creates object
_wmploadmedia($wmp, "http://www.vefire.ru/channel/oneplusone/asx/")
_wmpvalue( $wmp, "Controls" );show controls
GUISetState(@SW_SHOW)


While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
;
Case $ControlPanel_ShowHide_But ;скрыть показать панель контроля
If $nocontrols==False Then
$nocontrols=True
_wmpvalue( $wmp, "nocontrols")
GUICtrlSetData($ControlPanel_ShowHide_But,"Show")
Else
$nocontrols=False
_wmpvalue( $wmp, "controls")
GUICtrlSetData($ControlPanel_ShowHide_But,"Hide")
EndIf
;
Case $StopPlay_But ;остановить, продолжить воспроизведение
If $wmp.controls.isAvailable("play") Then
$wmp.controls.play()
GUICtrlSetData($StopPlay_But,"Stop")
Else
$wmp.controls.stop()
GUICtrlSetData($StopPlay_But,"Play")
EndIf
;
Case $FullScreen_But ;во весь экран
_wmpvalue( $wmp, "fullscreen")
;
Case $Stantion1_But ;1 тестовая станция
_wmploadmedia($wmp, "http://www.vefire.ru/channel/oneplusone/asx/")
;
Case $Stantion2_But ;2 тестовая станция
_wmploadmedia($wmp, "mms://89.187.1.165/gamma?WMContentBitrate=300000")
;
Case $Stantion3_But ;3 тестовая станция
_wmploadmedia($wmp,"mms://online.svitle.org/svitle")
EndSwitch
Sleep(10)
WEnd
;
;
Func quit()
Exit
EndFunc
;
;
Func _volMinus() ;уменьшить громкость на плеере
Local $vol
$vol=$wmp.settings.volume
if $vol <= 0 then Return
$vol = $vol - 10
if $vol < 0 then $vol = 0
$wmp.settings.Volume = $vol
EndFunc ;_volMinus
;
;
Func _volPlus() ;увеличить громкость на плеере
Local $vol
$vol=$wmp.settings.volume
if $vol >100 then Return
$vol = $vol + 10
if $vol >100 then $vol = 100
$wmp.settings.Volume = $vol
EndFunc ;_volPlus
;
;
#cs
_wmpcreate($show, $left, $top, $width = 100, $height = 100)
$show: 1 = shows controls
2 = hides controls
Return: The object for the control
#ce
Func _wmpcreate($show, $left, $top, $width = 360, $height = 360)
$oWMP = ObjCreate("WMPlayer.OCX")
If $oWMP = 0 Then Return 0
$oWMP.settings.autoStart = "False"
If $show = 1 Then
GUICtrlCreateObj($oWMP, $left, $top, $width, $height)
EndIf
Return $oWMP
EndFunc
;
;
#cs
_wmploadmedia( $object, $URL, $autostart = 1 )
$object: Object returned from the _wmpcreate()
$URL: Path or URL of the media
$autostart: 1 = yes
0 = no
Return: None
#ce
Func _wmploadmedia( $object, $URL, $autostart = 1 )
$object.URL = $URL
While Not $object.controls.isAvailable("play")
Sleep(10)
WEnd
If $autostart = 1 Then $object.controls.play()
EndFunc
;
;
#cs
_wmpsetvalue( $object, $setting, $para=1 )
$object: Object returned from the _wmpcreate()
$setting: "play"
"stop"
"pause"
"invisible" (Hides all)
"control" (Shows controls)
"nocontrol" (Hides controls)
"fullscreen"
"step" (frames to step before freezing)
"fastforward"
"fastreverse"
"volume" (0 To 100)
"rate" (-10 To 10)
"playcount"
Return: None
#ce
Func _wmpvalue( $object, $setting, $para=1 )
Select
Case $setting = "play"
If $object.controls.isAvailable("play") Then $object.controls.play()
Case $setting = "stop"
If $object.controls.isAvailable("stop") Then $object.controls.stop()
Case $setting = "pause"
If $object.controls.isAvailable("pause") Then $object.controls.pause()
Case $setting = "invisible"
$object.uiMode = "invisible"
Case $setting = "controls"
$object.uiMode = "full"
Case $setting = "nocontrols"
$object.uiMode = "none"
Case $setting = "fullscreen"
$object.fullscreen = "True"
Case $setting = "step"
If $object.controls.isAvailable("step") Then $object.controls.step($para)
Case $setting = "fastForward"
If $object.controls.isAvailable("fastForward") Then $object.controls.fastForward()
Case $setting = "fastReverse"
If $object.controls.isAvailable("fastReverse") Then $object.controls.fastReverse()
Case $setting = "volume"
$object.settings.volume = $para
Case $setting = "rate"
$object.settings.rate = $para
Case $setting = "playcount"
$object.settings.playCount = $para
Case $setting = "setposition"
$object.controls.currentPosition = $para
Case $setting = "getposition"
Return $object.controls.currentPosition
Case $setting = "getpositionstring";Returns HH:MM:SS
Return $object.controls.currentPositionString
Case $setting = "getduration"
Return $object.currentMedia.duration
EndSelect
EndFunc
Мне кажеться, что причина в некоректной работе параметра uiMode (у меня wmp10 установлен)
P.S. Набросал код только для вопроса, так что прошу не обращать внимание на несиметричность...

Creat0R
09-07-2009, 15:11
Я помню делал нечто подобное в Youtube Download Center, там я просто двигал окно с WinMove сразу после загрузки страницы...

Типа такого после _wmploadmedia:

ControlMove("[CLASS:AutoIt v3 GUI]", "", "1301200", 0, 0, 300, 300)

Также на MSDN пишут (http://msdn.microsoft.com/en-us/library/dd564089(VS.85).aspx) (в Remarks) про метод Height и Width, но у меня не удалось с этим разобраться.

beve
09-07-2009, 15:52
С тем примером у меня не удалось сделать желаемое. Сделал немного по-другому, за основу взявши это:Вот тут есть нечто подобное. »вот рабочий пример того, что я хотел сделать:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>

#Region Test
Opt('MustDeclareVars', 1); no required
_IEErrorHandlerRegister (); optional error handler
;Global $movie = FileOpenDialog("Open a movie or playlist", @MyDocumentsDir, "Movies (*.wpl;*.mpg;*.mpeg;*.wmv;*.avi)", 3)
Global $nocontrols=false
Global $url="http://www.vefire.ru/channel/oneplusone/asx/"
Global $MyGUI = GUICreate("WMPlayer Control", 430, 250)
Global $but_Station1=GUICtrlCreateButton("Station1",350,5,60,25)
Global $but_Station2=GUICtrlCreateButton("Station2",350,35,60,25)
Global $but_Station3=GUICtrlCreateButton("Station3",350,65,60,25)
Global $StopPlay_But=GUICtrlCreateButton("Stop/Play",350,95,60,25)
Global $FullScreen_But=GUICtrlCreateButton("FullScreen",350,125,60,25)
Global $ControlPanel_ShowHide_But=GUICtrlCreateButton("Hide",350,155,60,25)

Global $oIE = _GUICtrl_CreateWMPlayer($url, 5, 5, 320, 240)
GUISetState (@SW_SHOW, $MyGUI)
Global $playerOBJ = _IEGetObjById($oIE, "objWMPlayer")

While 1
Sleep(10)
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
;
Case $but_Station1
$playerOBJ.controls.stop()
_wmploadmedia($playerOBJ,"http://www.vefire.ru/channel/oneplusone/asx/")
;
Case $but_Station2
$playerOBJ.controls.stop()
_wmploadmedia($playerOBJ,"mms://89.187.1.165/gamma?WMContentBitrate=300000")
;
Case $but_Station3
$playerOBJ.controls.stop()
_wmploadmedia($playerOBJ,"mms://online.svitle.org/svitle")
;
Case $StopPlay_But ;остановить, продолжить воспроизведение
If $playerOBJ.controls.isAvailable("play") Then
$playerOBJ.controls.play()
Else
$playerOBJ.controls.stop()
EndIf
;
Case $FullScreen_But ;во весь экран
_wmpvalue( $playerOBJ, "fullscreen")
;
Case $ControlPanel_ShowHide_But ;скрыть показать панель контроля
If $nocontrols==False Then
$nocontrols=True
_wmpvalue( $playerOBJ, "nocontrols")
GUICtrlSetData($ControlPanel_ShowHide_But,"Show")
Else
$nocontrols=False
_wmpvalue( $playerOBJ, "controls")
GUICtrlSetData($ControlPanel_ShowHide_But,"Hide")
EndIf
Endswitch
Wend
$oIE = ""
#EndRegion Test

;===============================================
;===============================================
;===============================================

#cs
_wmploadmedia( $object, $URL )
$object: Object returned from the $playerOBJ = _IEGetObjById($oIE, "objWMPlayer")
$URL: Path or URL of the media
Return: None
#ce
Func _wmploadmedia( $object, $URL)
$object.URL = $URL
While Not $object.controls.isAvailable("play")
Sleep(10)
WEnd
$object.controls.play()
EndFunc
;
;
; Function: _GUICtrl_CreateWMPlayer
; Purpose: Embed Windows Media Player and play one file or one playlist only.
; Notes: PARAM NAME="url" is ReadOnly
; Authors: squirrely1
; borderless IE embed example: GaryFrost
; Kudos - Kare Johansson, CFire
; References:
; http://msdn2.microsoft.com/en-us/library/ms930698.aspx
; http://www.w3schools.com/media/media_playerref.asp
; clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6 - wmplayer latest installed version
; clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95 - wmp 6.4
;===============================================
Func _GUICtrl_CreateWMPlayer($movieURL, $playerLeft, $playerTop, $playerWidth, $playerHeight, _
$insetBorders = 0, $fullscreenMode = False, $showControls = True, $enableContextMenu = True, _
$LoopMode = True, $playCount = 1, $playVolume = 100, $playBalance = 0, $enableFullScreenControls = True)

If $fullscreenMode Then
$fullscreenMode = "true"
Else
$fullscreenMode = "false"
EndIf
If $showControls Then
$showControls = "true"
Else
$showControls = "false"
EndIf
If $enableContextMenu Then
$enableContextMenu = "true"
Else
$enableContextMenu = "false"
EndIf
If $LoopMode Then
$playCount = 999
EndIf
If $enableFullScreenControls Then
$enableFullScreenControls = "true"
Else
$enableFullScreenControls = "false"
EndIf

Local $myIE_Obj = _IECreateEmbedded ()
Local $GUIActiveX = GUICtrlCreateObj($myIE_Obj, $playerLeft, $playerTop, $playerWidth, $playerHeight)
_IENavigate($myIE_Obj, "about:blank")
Local $htmlWMP
$htmlWMP = '' _
& @CR & '<body style="margin:0;padding:0">' _
& @CR & '<OBJECT' _
& @CR & 'ID="objWMPlayer"' _
& @CR & 'STYLE="margin:0;padding:0"' _
& @CR & 'HSPACE="0"' _
& @CR & 'VSPACE="0"' _
& @CR & 'BORDER="0"' _
& @CR & 'WIDTH="' & $playerWidth & '"' _
& @CR & 'HEIGHT="' & $playerHeight & '"' _
& @CR & 'CLASSID="clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6"' _
& @CR & 'STANDBY="Loading Windows Media Player components..."' _
& @CR & 'TYPE="application/x-oleobject">' _
& @CR & '<PARAM NAME="allowHideControls" VALUE="true">' _
& @CR & '<PARAM NAME="autoStart" VALUE="true">' _
& @CR & '<PARAM NAME="audioStream" VALUE="false">' _
& @CR & '<PARAM NAME="autoSize" VALUE="true">' _
& @CR & '<PARAM NAME="balance" VALUE="' & $playBalance & '"><!-- -100 to 100 -->' _
& @CR & '<!-- <PARAM NAME="bufferingTime" VALUE="5"><!-- seconds -->' _
& @CR & '<PARAM NAME="clickToPlay" VALUE="false"><!-- has no effect -->' _
& @CR & '<PARAM NAME="currentPosition" VALUE="0"><!-- start position within video, in seconds -->' _
& @CR & '<PARAM NAME="enableContextMenu" VALUE="' & $enableContextMenu & '">' _
& @CR & '<PARAM NAME="enableFullScreenControls" VALUE="' & $enableFullScreenControls & '">' _
& @CR & '<PARAM NAME="enabled" VALUE="true"><!-- whether controls are enabled -->' _
& @CR & '<PARAM NAME="fullScreen" VALUE="' & $fullscreenMode & '">' _
& @CR & '<PARAM NAME="mute" VALUE="false">' _
& @CR & '<PARAM NAME="playCount" VALUE="' & $playCount & '">' _
& @CR & '<!-- <PARAM NAME="previewMode" VALUE="true"> -->' _
& @CR & '<PARAM NAME="rate" VALUE="1"><!-- play speed of -.5 to 2 increments of .1 -->' _
& @CR & '<PARAM NAME="sendPlayStateChangeEvents" VALUE="false">' _
& @CR & '<PARAM NAME="showCaptioning" VALUE="false">' _
& @CR & '<PARAM NAME="showControls" VALUE="' & $showControls & '">' _
& @CR & '<PARAM NAME="showGotoBar" VALUE="false">' _
& @CR & '<PARAM NAME="showPositionControls" VALUE="true"><!-- uiMode must = "full" -->' _
& @CR & '<PARAM NAME="showStatusBar" VALUE="false"><!-- has no effect -->' _
& @CR & '<PARAM NAME="showDisplay" VALUE="true"><!-- has no effect - reportedly shows filename -->' _
& @CR & '<PARAM NAME="stretchToFit" VALUE="true">' _
& @CR & '<PARAM NAME="uiMode" VALUE="full"><!-- invisible, none, mini, full -->' _
& @CR & '<!-- <PARAM NAME="videoBorderWidth" VALUE="0"> -->' _
& @CR & '<PARAM NAME="volume" VALUE="' & $playVolume & '"><!-- volume percent setting of wmplayer.exe -->' _
& @CR & '<PARAM NAME="windowlessVideo" VALUE="false"><!-- must be the default (false) for function to work in wmp 9.0, otherwise might renders video directly in the client area -->' _
& @CR & '</OBJECT>' _
& @CR & '</body>'
_IEDocWriteHTML ($myIE_Obj, $htmlWMP)
_IEAction ($myIE_Obj, "refresh")
$myIE_Obj.document.body.scroll = "no"
$myIE_Obj.document.body.style.border = $insetBorders
Return $myIE_Obj
EndFunc ;==>_GUICtrl_CreateWMPlayer
;
;
#cs
_wmpsetvalue( $object, $setting, $para=1 )
$object: Object returned from the _wmpcreate()
$setting: "play"
"stop"
"pause"
"invisible" (Hides all)
"control" (Shows controls)
"nocontrol" (Hides controls)
"fullscreen"
"step" (frames to step before freezing)
"fastforward"
"fastreverse"
"volume" (0 To 100)
"rate" (-10 To 10)
"playcount"
Return: None
#ce
Func _wmpvalue( $object, $setting, $para=1 )
Select
Case $setting = "play"
If $object.controls.isAvailable("play") Then $object.controls.play()
Case $setting = "stop"
If $object.controls.isAvailable("stop") Then $object.controls.stop()
Case $setting = "pause"
If $object.controls.isAvailable("pause") Then $object.controls.pause()
Case $setting = "invisible"
$object.uiMode = "invisible"
Case $setting = "controls"
$object.uiMode = "full"
Case $setting = "nocontrols"
$object.uiMode = "none"
Case $setting = "fullscreen"
$object.fullscreen = "True"
Case $setting = "step"
If $object.controls.isAvailable("step") Then $object.controls.step($para)
Case $setting = "fastForward"
If $object.controls.isAvailable("fastForward") Then $object.controls.fastForward()
Case $setting = "fastReverse"
If $object.controls.isAvailable("fastReverse") Then $object.controls.fastReverse()
Case $setting = "volume"
$object.settings.volume = $para
Case $setting = "rate"
$object.settings.rate = $para
Case $setting = "playcount"
$object.settings.playCount = $para
Case $setting = "setposition"
$object.controls.currentPosition = $para
Case $setting = "getposition"
Return $object.controls.currentPosition
Case $setting = "getpositionstring";Returns HH:MM:SS
Return $object.controls.currentPositionString
Case $setting = "getduration"
Return $object.currentMedia.duration
EndSelect
EndFunc




© OSzone.net 2001-2012