Seite 1 von 2
Windows per STOP Taste schliessen
Verfasst: 10.03.2015 11:52
von Velindos
Hallo Leute,
möchte per STOP Taste im WMP das Fenster schliessen!
Code: Alles auswählen
; Mediaplayer mit Stop schliessen!
MediaString$ = OpenFileRequester("Choose the movie to play", "", "Movie/Audio files|*.avi;*.mpg;*.MP4;*.asf;*.mp3;*.wav;*.flv;*.mid|All Files|*.*", 0)
Procedure PRESENT_MediaPlayerInsideExplorer(GGadget,MediaString.s,PlayerWidth,PlayerHeight)
Protected tmedia.s
tmedia = "<body topmargin=0 leftmargin=0 scroll='no'>"
tmedia + "<object id='mediaplayer' classid='clsid:22d6f312-b0f6-11d0-94ab-0080c74c7e95' type='application/x-oleobject' width='"+PlayerWidth+"' height='"+ PlayerHeight +"'>"
tmedia + "<param name='filename' value='"+MediaString+"'>"
tmedia + "<param name='animationatstart' value='true'>"
tmedia + "<param name='transparentatstart' value='true'>"
tmedia + "<param name='autostart' value='true'>"
tmedia + "<param name='showcontrols' value='true'>"
tmedia + "<param name='ShowStatusBar' value='false'>"
tmedia + "<param name='windowlessvideo' value='false'>"
tmedia + "</object>"
SetGadgetItemText(GGadget, #PB_Web_HtmlCode , tmedia)
EndProcedure
wFlags = #PB_Window_ScreenCentered | #PB_Window_SystemMenu
OpenWindow(0, 0, 0, 667, 675, "Windows Media Player", wFlags)
WebGadget(1,0, 0, 667, 675,"")
PlayerWidth= 667
PlayerHeight= 675
PRESENT_MediaPlayerInsideExplorer(1,MediaString$,PlayerWidth,PlayerHeight)
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
Habe es schon mit den Constanten
#APPCOMMAND_MEDIA_NEXTTRACK
#APPCOMMAND_MEDIA_PREVIOUSTRACK
#APPCOMMAND_MEDIA_STOP
#APPCOMMAND_MEDIA_PLAY_PAUSE
versucht, bekomme jedoch kein Ereigniss!
Gruss ... Velindos
Re: Windows per STOP Taste schliessen
Verfasst: 16.03.2015 17:12
von Velindos
Hallo Leute,
kann mir jemand sagen wie man den Player auslesen kann, wenn das Video zu ende ist um ein Signal zum umschalten zu haben!
Code: Alles auswählen
Global Player.IWebBrowser2
Procedure PRESENT_MediaPlayerInsideExplorer(GGadget,MediaString.s,PlayerWidth,PlayerHeight)
Protected tmedia.s
tmedia = "<body topmargin=0 leftmargin=0 scroll='no'>"
tmedia + "<OBJECT id=Player height='"+PlayerHeight+"' width='"+PlayerWidth+"' classid=clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95>"
tmedia + "<param name='filename' value='"+MediaString+"'>"
tmedia + "<param name='animationatstart' value='true'>"
tmedia + "<param name='transparentatstart' value='true'>"
tmedia + "<param name='autostart' value='true'>"
tmedia + "<param name='showcontrols' value='true'>"
tmedia + "<param name='ShowStatusBar' value='false'>"
tmedia + "<param name='windowlessvideo' value='false'>"
tmedia + "</object>"
SetGadgetItemText(0, #PB_Web_HtmlCode , tmedia)
EndProcedure
MediaString$ = "Z:\Movies\Andreas Kümmert - Heart Of Stone.mp4" ; <======= Hier File einsetzen!
PlayerWidth= 600
PlayerHeight= 600
If OpenWindow(0, 0, 0, PlayerWidth, PlayerHeight, "WebBRowser Media Busy Check",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
If CreateGadgetList(WindowID(0))
TextGadget(1, 10, 570, 100, 20, "", #PB_Text_Border)
WebGadget(0, 10, 10, 580, 555, "")
PRESENT_MediaPlayerInsideExplorer(0,MediaString$,PlayerWidth,PlayerHeight)
Player.IWebBrowser2 = GetWindowLong_(GadgetID(0), #GWL_USERDATA)
If Player.IWebBrowser2
Player.IWebBrowser2\put_Silent(#True)
Else
Player.IWebBrowser2\put_Silent(#False)
EndIf
Repeat
Event = WindowEvent()
Player\get_Busy(@IsBusy.l)
Debug Player\get_Busy(@IsBusy.l)
If IsBusy
SetGadgetText(1, "busy!")
Else
SetGadgetText(1, "not busy")
EndIf
If Event = 0
Delay(1)
EndIf
Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf
EndIf
Gruss ... Velindos
Re: Windows per STOP Taste schliessen
Verfasst: 16.03.2015 18:44
von Kiffi
ist das der Windows Media Player, den Du da in den Browser lädst?
Grüße ... Peter
Re: Windows per STOP Taste schliessen
Verfasst: 16.03.2015 18:49
von Velindos
Hallo Kiffi,
"Ja"
Gruss ... Velindos
Re: Windows per STOP Taste schliessen
Verfasst: 16.03.2015 20:15
von Kiffi
gibt es einen besonderen Grund, warum Du das Control im Browser ausführst? Du könntest es auch direkt in einem PB-Window platzieren. Das würde die Bedienung ein wenig vereinfachen.
Hier mal ein kleines Beispiel:
Code: Alles auswählen
EnableExplicit
Global MediaPlayer.COMateObject
Global Quit
Procedure PlayStateChangeEvent(object.COMateObject, eventName.s, parameterCount)
If MediaPlayer\GetIntegerProperty("PlayState") = 0
Quit = #True
EndIf
EndProcedure
OpenWindow(0, #PB_Ignore, #PB_Ignore, 640, 480, "MediaPlayer", #PB_Window_SystemMenu)
MediaPlayer = COMate_CreateActiveXControl(10, 10, 620, 400, "MediaPlayer.MediaPlayer.1")
If MediaPlayer
MediaPlayer\Invoke("Open('[DeineMediaDatei]')")
MediaPlayer\SetEventHandler("PlayStateChange", @PlayStateChangeEvent()) ; jeder Mal, wenn sich der PlayState ändert,
; wird die PlayStateChangeEvent() aufgerufen
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Quit = #True
EndSelect
Until Quit = #True
MediaPlayer\Release()
EndIf
Grüße ... Peter
Re: Windows per STOP Taste schliessen
Verfasst: 16.03.2015 20:58
von Velindos
Hallo Kiffi,
vorab DANKE für deinen Vorschlag! Zu deiner Frage, nicht Unbedingt!
Bei der jetztigen Lösung habe ich keine Ahnung wie ich die Sache in ein Gadget(Imagegadget) bekomme?
Vielleicht noch einen Tip.
Gruss ... Velindos
Re: Windows per STOP Taste schliessen
Verfasst: 16.03.2015 21:18
von Kiffi
vielleicht so:
Code: Alles auswählen
OpenWindow(...
ContainerGadget(...
MediaPlayer = COMate_CreateActiveXControl(...
Grüße ... Peter
Re: Windows per STOP Taste schliessen
Verfasst: 16.03.2015 21:31
von Velindos
Hallo Kiffi,
Danke, ... werde die Sache morgen mal Austesten!
In ein ImageGadget nehme ich an, geht nicht!
Gruss ... Velindos
Re: Windows per STOP Taste schliessen
Verfasst: 16.03.2015 21:48
von Kiffi
Velindos hat geschrieben:In ein ImageGadget nehme ich an, geht nicht!
nicht, dass ich wüsste. Da muss IMO schon ein Container sein.
Grüße ... Peter
Re: Windows per STOP Taste schliessen
Verfasst: 17.03.2015 16:06
von Velindos
Hallo,
gibt es einen besonderen Grund, warum Du das Control im Browser ausführst?
ja, habe festgestellt das ich mit dem Player nicht im Programm zu recht komme, da ich die Sachen oft aus dem Webgadget starte!
Nun beim Beispiel mit dem WEBGADGET würde mich interessieren wie ich zum OBJECT 'Player' komme. Habe im Forum gestöbert aber keine Antwort gefunden, vielleicht kann mir jemand helfen!
Code: Alles auswählen
;http://www.purebasic.fr/english/viewtopic.php?f=13&t=45868
Global Player.IWebBrowser2
Global MediaString$ = "Z:\Movies\Andreas Kümmert - Heart Of Stone.mp4" ; <======= Hier File einsetzen!
Global PlayerWidth= 600
Global PlayerHeight= 600
Procedure PRESENT_MediaPlayerInsideExplorer(GGadget,MediaString.s,PlayerWidth,PlayerHeight)
Protected tmedia.s
tmedia = "<html>"
tmedia = "<body topmargin=0 leftmargin=0 scroll='no'>"
tmedia + "<OBJECT id='Player' height='"+PlayerHeight+"' width='"+PlayerWidth+"' classid=clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95>"
; Wie kann ich das OBEJCT 'Player' einbinden "*Player.IWebBrowser2 = MyGetWindowLong(Player, #GWL_USERDATA)" und Abfragen auf zb. STOP
tmedia + "<param name='filename' value='"+MediaString+"'>"
tmedia + "<param name='animationatstart' value='true'>"
tmedia + "<param name='transparentatstart' value='true'>"
tmedia + "<param name='autostart' value='true'>"
tmedia + "<param name='showcontrols' value='true'>"
tmedia + "<param name='ShowStatusBar' value='false'>"
tmedia + "<param name='windowlessvideo' value='false'>"
tmedia + "</object>"
tmedia + "</body>"
tmedia + "</html>"
SetGadgetItemText(GGadget, #PB_Web_HtmlCode , tmedia)
EndProcedure
Import "user32.lib"
MyGetWindowLong(hwnd.i, index.i) As "_GetWindowLongA"
EndImport
If OpenWindow(0, 0, 0, PlayerWidth, PlayerHeight, "WebGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
WebGadget(0, 0, 0, PlayerWidth, PlayerHeight, "");"http://www.purebasic.com"
PRESENT_MediaPlayerInsideExplorer(0,MediaString$,PlayerWidth,PlayerHeight)
; //////////////////////////////////////////////////////////////////////
*iwbb2.IWebBrowser2 = MyGetWindowLong(GadgetID(0), #GWL_USERDATA)
With *iwbb2
\get_width(@width.l)
\get_height(@height.l)
\get_silent(@Silent.l)
EndWith
Debug width
Debug height
Debug Silent
;//////////////////////////////////////////////////////////////////////
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Gruss ... Velindos