|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Создать окно WMP в GUI |
|
[решено] Создать окно WMP в GUI
|
Старожил Сообщения: 307 |
Профиль | Отправить PM | Цитировать Как создать такое окно проигрователя WMP в GUI, как на скриншоте:
А также возможность возпроизвести в этом окне проигрователя WMP некоторый URL-поток по нажатию на кнопку-ссылку (этой ссылкой может быть к примеру:вот эта |
|
------- Отправлено: 15:44, 08-07-2009 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Вот тут есть нечто подобное.
Ну и можно ещё покапаться в результатах поискового запроса на офф. форуме. |
------- Отправлено: 16:21, 08-07-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 206
|
Профиль | Отправить PM | Цитировать Так же обрати внимание на это.
|
Отправлено: 16:56, 08-07-2009 | #3 |
Старожил Сообщения: 307
|
Профиль | Отправить PM | Цитировать Спасибо, вроде просто, а весь вечер ходил и изучал...по ссылках. Нашел несложный вариант, все то что нужно, но вот проблема с размерами окна 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 P.S. Набросал код только для вопроса, так что прошу не обращать внимание на несиметричность... |
------- Отправлено: 01:07, 09-07-2009 | #4 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Я помню делал нечто подобное в Youtube Download Center, там я просто двигал окно с WinMove сразу после загрузки страницы...
Типа такого после _wmploadmedia: Также на MSDN пишут (в Remarks) про метод Height и Width, но у меня не удалось с этим разобраться. |
|
------- Отправлено: 15:11, 09-07-2009 | #5 |
Старожил Сообщения: 307
|
Профиль | Отправить PM | Цитировать С тем примером у меня не удалось сделать желаемое. Сделал немного по-другому, за основу взявши это:
Цитата Creat0R:
#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 |
|
------- Отправлено: 15:52, 09-07-2009 | #6 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Создать дочернее окно IE | Shampur | AutoIt | 9 | 20-08-2009 18:55 | |
[решено] Создать окно с полосой прокрутки | morgan1991 | AutoIt | 1 | 16-07-2009 18:13 | |
Не работает GUI после выхода другова GUI | sashadeg | AutoIt | 3 | 15-05-2009 22:03 | |
[решено] Передалать стандартный "InputBox" в анологичное "GUI-окно" | sashadeg | AutoIt | 15 | 05-04-2009 16:47 | |
[решено] Как прилепить некое окно GUI к координатам окна другой проги | beve | AutoIt | 4 | 09-02-2009 13:41 |
|