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