Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Создать окно WMP в GUI

Ответить
Настройки темы
[решено] Создать окно WMP в GUI

Аватара для beve

Старожил


Сообщения: 307
Благодарности: 137


Конфигурация

Профиль | Отправить PM | Цитировать


Как создать такое окно проигрователя WMP в GUI, как на скриншоте:

А также возможность возпроизвести в этом окне проигрователя WMP некоторый URL-поток по нажатию на кнопку-ссылку (этой ссылкой может быть к примеру:вот эта

-------
Не в кількості знань полягає освіта, а в повному розумінні і вмілому використанні того, що знаєш.


Отправлено: 15:44, 08-07-2009

 

Аватара для Creat0R

Must AutoIt


Moderator


Сообщения: 3054
Благодарности: 1008

Профиль | Сайт | Отправить PM | Цитировать


Вот тут есть нечто подобное.

Ну и можно ещё покапаться в результатах поискового запроса на офф. форуме.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

Русское сообщество AutoIt | CreatoR's Lab | Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:21, 08-07-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Yashied

Старожил


Сообщения: 206
Благодарности: 88

Профиль | Отправить PM | Цитировать


Так же обрати внимание на это.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:56, 08-07-2009 | #3


Аватара для beve

Старожил


Сообщения: 307
Благодарности: 137

Профиль | Отправить 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
Мне кажеться, что причина в некоректной работе параметра uiMode (у меня wmp10 установлен)
P.S. Набросал код только для вопроса, так что прошу не обращать внимание на несиметричность...

-------
Не в кількості знань полягає освіта, а в повному розумінні і вмілому використанні того, що знаєш.

Это сообщение посчитали полезным следующие участники:

Отправлено: 01:07, 09-07-2009 | #4


Аватара для Creat0R

Must AutoIt


Moderator


Сообщения: 3054
Благодарности: 1008

Профиль | Сайт | Отправить PM | Цитировать


Я помню делал нечто подобное в Youtube Download Center, там я просто двигал окно с WinMove сразу после загрузки страницы...

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

Код: Выделить весь код
ControlMove("[CLASS:AutoIt v3 GUI]", "", "1301200", 0, 0, 300, 300)
Также на MSDN пишутRemarks) про метод Height и Width, но у меня не удалось с этим разобраться.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

Русское сообщество AutoIt | CreatoR's Lab | Opera AC Community


Отправлено: 15:11, 09-07-2009 | #5


Аватара для beve

Старожил


Сообщения: 307
Благодарности: 137

Профиль | Отправить 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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Создать окно WMP в GUI

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Создать дочернее окно 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




 
Переход