Windows per STOP Taste schliessen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Re: Windows per STOP Taste schliessen

Beitrag von Velindos »

Hallo Leute,
kann mir jemand sagen, warum ich das Objekt im Webgadget = Player nicht erwische, wäre Dankbar für einen Tip!

Code: Alles auswählen

#WebG = 5

Global WebObject.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 "*WebObject.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


win = OpenWindow(#PB_Any,0,0,800,600,"test")
CreateGadgetList(WindowID(win))
WebGadget(#WebG,0,0,800,600,"")

; html$ = "<!DOCTYPE HTML PUBLIC "+Chr(34)+"-//W3C//DTD HTML 4.01 Transitional//EN"+Chr(34)+"><HTML><HEAD><TITLE>test</TITLE><BODY contentEditable=true>Press RETURN anywhere in this line. Now try SHIFT+RETURN.</BODY></HTML>"
; SetGadgetItemText(#WebG,#PB_Web_HtmlCode,html$)

PRESENT_MediaPlayerInsideExplorer(#WebG,MediaString$,PlayerWidth,PlayerHeight)


Repeat
  
  we=WindowEvent()
  ; If we = #WM_KEYDOWN
  wParam = EventwParam()
  lParam = EventlParam()
  
  If wParam = #VK_MEDIA_PLAY_PAUSE Or wParam = #VK_MEDIA_NEXT_TRACK
    WebObject.IWebBrowser2 = GetWindowLong_(GadgetID(#WebG), #GWL_USERDATA)
    CoInitialize_(0)
    CoCreateInstance_(?CLSID_IOleInPlaceActiveObject, 0, 1, ?IID_IOleInPlaceActiveObject,@OleObject.IOleInPlaceActiveObject)
    If WebObject\QueryInterface(?IID_IOleInPlaceActiveObject, @OleObject) = #S_OK     
      web.MSG\message = we
      ; I know EventwParam() and EventwLaram()are no longer supported in Purebasic, but for now it works
      web\wParam = wParam
      web\lParam = lParam
      Debug wParam
      Debug lParam
      Debug "#VK_MEDIA_PLAY_PAUSE"
      OleObject\TranslateAccelerator(@web)
      OleObject\Release()
    EndIf
    CoUninitialize_()
    
  EndIf
  
  
  If wParam=#VK_MEDIA_STOP
    WebObject.IWebBrowser2 = GetWindowLong_(GadgetID(#WebG), #GWL_USERDATA)
    CoInitialize_(0)
    CoCreateInstance_(?CLSID_IOleInPlaceActiveObject, 0, 1, ?IID_IOleInPlaceActiveObject,@OleObject.IOleInPlaceActiveObject)
    WebObject\QueryInterface(?IID_IOleInPlaceActiveObject, @OleObject)
    web.MSG\message = #WM_KEYDOWN
    ;web\wParam = #VK_SHIFT
    ;web\lParam = #VK_RETURN
    web\wParam = #VK_MEDIA_STOP
    web\lParam = lParam
    
    Debug "Return"
    
    OleObject\TranslateAccelerator(@web)
    
    OleObject\Release()
    CoUninitialize_()
  EndIf
  
  ; EndIf
  
Until GetAsyncKeyState_(#VK_ESCAPE) Or we=#PB_Event_CloseWindow

CloseWindow(win)
End


DataSection
  ;{00000117-0000-0000-C000-000000000046}
  ; IID_IOleInPlaceActiveObject:
  ; Data.l $00000117
  ; Data.w $0000, $0000
  ; Data.b $C0, $00, $00, $00, $00, $00, $00, $46
  ; 
  ; ;{00000320-0000-0000-C000-000000000046}
  ; CLSID_IOleInPlaceActiveObject:
  ; Data.l $00000320
  ; Data.w $0000, $0000
  ; Data.b $C0, $00, $00, $00, $00, $00, $00, $46
  
  
  ;   CLSID_MediaPlayer_MediaPlayer:  ; {22D6F312-B0F6-11D0-94AB-0080C74C7E95}
  CLSID_IOleInPlaceActiveObject:
  Data.l $22D6F312
  Data.w $B0F6,$11D0
  Data.b $94,$AB,$0,$80,$C7,$4C,$7E,$95
  
  ;   IID__MediaPlayerEvents:  ; {2D3A4C40-E711-11D0-94AB-0080C74C7E95}
  IID_IOleInPlaceActiveObject:
  Data.l $2D3A4C40
  Data.w $E711,$11D0
  Data.b $94,$AB,$0,$80,$C7,$4C,$7E,$95
EndDataSection
Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Re: Windows per STOP Taste schliessen

Beitrag von Velindos »

Hallo Leute,
brauch mal eure Hilfe. Habe die Sache mal über Interface gemacht.

Nun das Problem, dass die Sache beim Start sich im Webgadget verkrümmelt!
Sprich das Video ist nicht zentriert und die Buttonleiste nicht unten!

Code: Alles auswählen

; XIncludeFile "wmp.pbi"
Interface lMediaPlayer ; Player Interface Player
  QueryInterface(riid.l,ppvObj.l)
  AddRef()
  Release()
  GetTypeInfoCount(pctinfo.l)
  GetTypeInfo(itinfo.l,lcid.l,pptinfo.l)
  GetIDsOfNames(riid.l,rgszNames.l,cNames.l,lcid.l,rgdispid.l)
  Invoke(dispidMember.l,riid.l,lcid.l,wFlags.l,pdispparams.l,pvarResult.l,pexcepinfo.l,puArgErr.l)
  get_CurrentPosition(dispidMember.l)
  put_CurrentPosition(dispidMember.d)
  get_Duration(dispidMember.l)
  get_ImageSourceWidth(dispidMember.l)
  get_ImageSourceHeight(dispidMember.l)
  get_MarkerCount(dispidMember.l)
  get_CanScan(dispidMember.l)
  get_CanSeek(dispidMember.l)
  get_CanSeekToMarkers(dispidMember.l)
  get_CurrentMarker(dispidMember.l)
  put_CurrentMarker(dispidMember.l)
  get_FileName(dispidMember.l)
  put_FileName(dispidMember.p-bstr)
  get_SourceLink(dispidMember.l)
  get_CreationDate(dispidMember.l)
  get_ErrorCorrection(dispidMember.l)
  get_Bandwidth(dispidMember.l)
  get_SourceProtocol(dispidMember.l)
  get_ReceivedPackets(dispidMember.l)
  get_RecoveredPackets(dispidMember.l)
  get_LostPackets(dispidMember.l)
  get_ReceptionQuality(dispidMember.l)
  get_BufferingCount(dispidMember.l)
  get_IsBroadcast(dispidMember.l)
  get_BufferingProgress(dispidMember.l)
  get_ChannelName(dispidMember.l)
  get_ChannelDescription(dispidMember.l)
  get_ChannelURL(dispidMember.l)
  get_ContactAddress(dispidMember.l)
  get_ContactPhone(dispidMember.l)
  get_ContactEmail(dispidMember.l)
  get_BufferingTime(dispidMember.l)
  put_BufferingTime(dispidMember.d)
  get_AutoStart(dispidMember.l)
  put_AutoStart(dispidMember.w)
  get_AutoRewind(dispidMember.l)
  put_AutoRewind(dispidMember.w)
  get_Rate(dispidMember.l)
  put_Rate(dispidMember.d)
  get_SendKeyboardEvents(dispidMember.l)
  put_SendKeyboardEvents(dispidMember.w)
  get_SendMouseClickEvents(dispidMember.l)
  put_SendMouseClickEvents(dispidMember.w)
  get_SendMouseMoveEvents(dispidMember.l)
  put_SendMouseMoveEvents(dispidMember.w)
  get_PlayCount(dispidMember.l)
  put_PlayCount(dispidMember.l)
  get_ClickToPlay(dispidMember.l)
  put_ClickToPlay(dispidMember.w)
  get_AllowScan(dispidMember.l)
  put_AllowScan(dispidMember.w)
  get_EnableContextMenu(dispidMember.l)
  put_EnableContextMenu(dispidMember.w)
  get_CursorType(dispidMember.l)
  put_CursorType(dispidMember.l)
  get_CodecCount(dispidMember.l)
  get_AllowChangeDisplaySize(dispidMember.l)
  put_AllowChangeDisplaySize(dispidMember.w)
  get_IsDurationValid(dispidMember.l)
  get_OpenState(dispidMember.l)
  get_SendOpenStateChangeEvents(dispidMember.l)
  put_SendOpenStateChangeEvents(dispidMember.w)
  get_SendWarningEvents(dispidMember.l)
  put_SendWarningEvents(dispidMember.w)
  get_SendErrorEvents(dispidMember.l)
  put_SendErrorEvents(dispidMember.w)
  get_PlayState(dispidMember.l)
  get_SendPlayStateChangeEvents(dispidMember.l)
  put_SendPlayStateChangeEvents(dispidMember.w)
  get_DisplaySize(dispidMember.l)
  put_DisplaySize(dispidMember.l)
  get_InvokeURLs(dispidMember.l)
  put_InvokeURLs(dispidMember.w)
  get_BaseURL(dispidMember.l)
  put_BaseURL(dispidMember.p-bstr)
  get_DefaultFrame(dispidMember.l)
  put_DefaultFrame(dispidMember.p-bstr)
  get_HasError(dispidMember.l)
  get_ErrorDescription(dispidMember.l)
  get_ErrorCode(dispidMember.l)
  get_AnimationAtStart(dispidMember.l)
  put_AnimationAtStart(dispidMember.w)
  get_TransparentAtStart(dispidMember.l)
  put_TransparentAtStart(dispidMember.w)
  get_Volume(dispidMember.l)
  put_Volume(dispidMember.l)
  get_Balance(dispidMember.l)
  put_Balance(dispidMember.l)
  get_ReadyState(dispidMember.l)
  get_SelectionStart(dispidMember.l)
  put_SelectionStart(dispidMember.d)
  get_SelectionEnd(dispidMember.l)
  put_SelectionEnd(dispidMember.d)
  get_ShowDisplay(dispidMember.l)
  put_ShowDisplay(dispidMember.w)
  get_ShowControls(dispidMember.l)
  put_ShowControls(dispidMember.w)
  get_ShowPositionControls(dispidMember.l)
  put_ShowPositionControls(dispidMember.w)
  get_ShowTracker(dispidMember.l)
  put_ShowTracker(dispidMember.w)
  get_EnablePositionControls(dispidMember.l)
  put_EnablePositionControls(dispidMember.w)
  get_EnableTracker(dispidMember.l)
  put_EnableTracker(dispidMember.w)
  get_Enabled(dispidMember.l)
  put_Enabled(dispidMember.w)
  get_DisplayForeColor(dispidMember.l)
  put_DisplayForeColor(dispidMember.l)
  get_DisplayBackColor(dispidMember.l)
  put_DisplayBackColor(dispidMember.l)
  get_DisplayMode(dispidMember.l)
  put_DisplayMode(dispidMember.l)
  get_VideoBorder3D(dispidMember.l)
  put_VideoBorder3D(dispidMember.w)
  get_VideoBorderWidth(dispidMember.l)
  put_VideoBorderWidth(dispidMember.l)
  get_VideoBorderColor(dispidMember.l)
  put_VideoBorderColor(dispidMember.l)
  get_ShowGotoBar(dispidMember.l)
  put_ShowGotoBar(dispidMember.w)
  get_ShowStatusBar(dispidMember.l)
  put_ShowStatusBar(dispidMember.w)
  get_ShowCaptioning(dispidMember.l)
  put_ShowCaptioning(dispidMember.w)
  get_ShowAudioControls(dispidMember.l)
  put_ShowAudioControls(dispidMember.w)
  get_CaptioningID(dispidMember.l)
  put_CaptioningID(dispidMember.p-bstr)
  get_Mute(dispidMember.l)
  put_Mute(dispidMember.w)
  get_CanPreview(dispidMember.l)
  get_PreviewMode(dispidMember.l)
  put_PreviewMode(dispidMember.w)
  get_HasMultipleItems(dispidMember.l)
  get_Language(dispidMember.l)
  put_Language(dispidMember.l)
  get_AudioStream(dispidMember.l)
  put_AudioStream(dispidMember.l)
  get_SAMIStyle(dispidMember.l)
  put_SAMIStyle(dispidMember.p-bstr)
  get_SAMILang(dispidMember.l)
  put_SAMILang(dispidMember.p-bstr)
  get_SAMIFileName(dispidMember.l)
  put_SAMIFileName(dispidMember.p-bstr)
  get_StreamCount(dispidMember.l)
  get_ClientId(dispidMember.l)
  get_ConnectionSpeed(dispidMember.l)
  get_AutoSize(dispidMember.l)
  put_AutoSize(dispidMember.w)
  get_EnableFullScreenControls(dispidMember.l)
  put_EnableFullScreenControls(dispidMember.w)
  get_ActiveMovie(dispidMember.l)
  get_NSPlay(dispidMember.l)
  get_WindowlessVideo(dispidMember.l)
  put_WindowlessVideo(dispidMember.w)
  Play()
  Stop()
  Pause()
  GetMarkerTime(MarkerNum.l)
  GetMarkerName(MarkerNum.l)
  AboutBox()
  GetCodecInstalled(CodecNum.l)
  GetCodecDescription(CodecNum.l)
  GetCodecURL(CodecNum.l)
  GetMoreInfoURL(MoreInfoType.l)
  GetMediaInfoString(MediaInfoType.l)
  Cancel()
  Open(bstrFileName.p-bstr)
  IsSoundCardEnabled()
Next()
Previous()
StreamSelect(StreamNum.l)
FastForward()
FastReverse()
GetStreamName(StreamNum.l)
GetStreamGroup(StreamNum.l)
GetStreamSelected(StreamNum.l)
EndInterface


Enumeration
  #Win
  #WebContainer
  #WinLibary
  
EndEnumeration

Global PlayerWidth= 600
Global PlayerHeight= 600
Global MediaString$ = "Z:\Movies\Andreas Kümmert - Heart Of Stone.mp4"  ; <======= Hier File einsetzen!

Define.lMediaPlayer *mp

Prototype.l AtlAxWinInit() 
Prototype.l AtlAxCreateControl(lpszName.p-bstr,hWnd.l,*pStream.IStream,*ppUnkContainer.IUnknown) 
Prototype.l AtlAxGetControl(hWnd.l,*pp.IUnknown) 


OpenLibrary(#WinLibary,"atl.dll")
AtlAxWinInit.AtlAxWinInit=GetFunction(#WinLibary,"AtlAxWinInit")
AtlAxCreateControl.AtlAxCreateControl=GetFunction(#WinLibary,"AtlAxCreateControl")
AtlAxGetControl.AtlAxGetControl=GetFunction(#WinLibary,"AtlAxGetControl")
AtlAxWinInit()

; AtlAxWinInit()
#Flags=#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered

OpenWindow(#Win,0,0,PlayerWidth,PlayerHeight,"MediaPlayer",#Flags)
; ContainerGadget(#WebContainer,0,0,PlayerWidth,PlayerHeight)
CoInitialize_(#WebContainer)
WebGadget(#WebContainer,0,0,PlayerWidth,PlayerHeight,"")

AtlAxCreateControl("MediaPlayer.MediaPlayer.1", WindowID(#Win), 0, 0)
AtlAxGetControl(WindowID(#Win),@*mp.lMediaPlayer)

; AtlAxCreateControl("MediaPlayer.MediaPlayer.1", GadgetID(#WebContainer), 0, 0)
; AtlAxGetControl(GadgetID(#WebContainer),@*mp.lMediaPlayer)

 *mp\ AboutBox()

*mp\put_FileName(MediaString$)

Repeat 
  *mp\get_PlayState(@dispidMember.l)
  
  Debug"playstate"
  Debug dispidMember.l
  
Until WaitWindowEvent(32)=#PB_Event_CloseWindow 

*mp\Release() ; Steuerelement freigeben 
CloseWindow(#Win)
Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Re: Windows per STOP Taste schliessen

Beitrag von Velindos »

Hallo Leute,
der Mediaplayer läuft im Container.

Code: Alles auswählen

; UNICODE-Support
; IMediaPlayer bei Movie Ende schaltet er ab
; Geht in Vollblild
EnableExplicit
; XIncludeFile "wmp86.pbi"

Interface IMediaPlayer Extends IDispatch          
   get_CurrentPosition(dispidMember.l)
   put_CurrentPosition(dispidMember.d)
   get_Duration(dispidMember.l)
   get_ImageSourceWidth(dispidMember.l)
   get_ImageSourceHeight(dispidMember.l)
   get_MarkerCount(dispidMember.l)
   get_CanScan(dispidMember.l)
   get_CanSeek(dispidMember.l)
   get_CanSeekToMarkers(dispidMember.l)
   get_CurrentMarker(dispidMember.l)
   put_CurrentMarker(dispidMember.l)
   get_FileName(dispidMember.l)
   put_FileName(dispidMember.p-bstr)
   get_SourceLink(dispidMember.l)
   get_CreationDate(dispidMember.l)
   get_ErrorCorrection(dispidMember.l)
   get_Bandwidth(dispidMember.l)
   get_SourceProtocol(dispidMember.l)
   get_ReceivedPackets(dispidMember.l)
   get_RecoveredPackets(dispidMember.l)
   get_LostPackets(dispidMember.l)
   get_ReceptionQuality(dispidMember.l)
   get_BufferingCount(dispidMember.l)
   get_IsBroadcast(dispidMember.l)
   get_BufferingProgress(dispidMember.l)
   get_ChannelName(dispidMember.l)
   get_ChannelDescription(dispidMember.l)
   get_ChannelURL(dispidMember.l)
   get_ContactAddress(dispidMember.l)
   get_ContactPhone(dispidMember.l)
   get_ContactEmail(dispidMember.l)
   get_BufferingTime(dispidMember.l)
   put_BufferingTime(dispidMember.d)
   get_AutoStart(dispidMember.l)
   put_AutoStart(dispidMember.w)
   get_AutoRewind(dispidMember.l)
   put_AutoRewind(dispidMember.w)
   get_Rate(dispidMember.l)
   put_Rate(dispidMember.d)
   get_SendKeyboardEvents(dispidMember.l)
   put_SendKeyboardEvents(dispidMember.w)
   get_SendMouseClickEvents(dispidMember.l)
   put_SendMouseClickEvents(dispidMember.w)
   get_SendMouseMoveEvents(dispidMember.l)
   put_SendMouseMoveEvents(dispidMember.w)
   get_PlayCount(dispidMember.l)
   put_PlayCount(dispidMember.l)
   get_ClickToPlay(dispidMember.l)
   put_ClickToPlay(dispidMember.w)
   get_AllowScan(dispidMember.l)
   put_AllowScan(dispidMember.w)
   get_EnableContextMenu(dispidMember.l)
   put_EnableContextMenu(dispidMember.w)
   get_CursorType(dispidMember.l)
   put_CursorType(dispidMember.l)
   get_CodecCount(dispidMember.l)
   get_AllowChangeDisplaySize(dispidMember.l)
   put_AllowChangeDisplaySize(dispidMember.w)
   get_IsDurationValid(dispidMember.l)
   get_OpenState(dispidMember.l)
   get_SendOpenStateChangeEvents(dispidMember.l)
   put_SendOpenStateChangeEvents(dispidMember.w)
   get_SendWarningEvents(dispidMember.l)
   put_SendWarningEvents(dispidMember.w)
   get_SendErrorEvents(dispidMember.l)
   put_SendErrorEvents(dispidMember.w)
   get_PlayState(dispidMember.l)
   get_SendPlayStateChangeEvents(dispidMember.l)
   put_SendPlayStateChangeEvents(dispidMember.w)
   get_DisplaySize(dispidMember.l)
   put_DisplaySize(dispidMember.l)
   get_InvokeURLs(dispidMember.l)
   put_InvokeURLs(dispidMember.w)
   get_BaseURL(dispidMember.l)
   put_BaseURL(dispidMember.p-bstr)
   get_DefaultFrame(dispidMember.l)
   put_DefaultFrame(dispidMember.p-bstr)
   get_HasError(dispidMember.l)
   get_ErrorDescription(dispidMember.l)
   get_ErrorCode(dispidMember.l)
   get_AnimationAtStart(dispidMember.l)
   put_AnimationAtStart(dispidMember.w)
   get_TransparentAtStart(dispidMember.l)
   put_TransparentAtStart(dispidMember.w)
   get_Volume(dispidMember.l)
   put_Volume(dispidMember.l)
   get_Balance(dispidMember.l)
   put_Balance(dispidMember.l)
   get_ReadyState(dispidMember.l)
   get_SelectionStart(dispidMember.l)
   put_SelectionStart(dispidMember.d)
   get_SelectionEnd(dispidMember.l)
   put_SelectionEnd(dispidMember.d)
   get_ShowDisplay(dispidMember.l)
   put_ShowDisplay(dispidMember.w)
   get_ShowControls(dispidMember.l)
   put_ShowControls(dispidMember.w)
   get_ShowPositionControls(dispidMember.l)
   put_ShowPositionControls(dispidMember.w)
   get_ShowTracker(dispidMember.l)
   put_ShowTracker(dispidMember.w)
   get_EnablePositionControls(dispidMember.l)
   put_EnablePositionControls(dispidMember.w)
   get_EnableTracker(dispidMember.l)
   put_EnableTracker(dispidMember.w)
   get_Enabled(dispidMember.l)
   put_Enabled(dispidMember.w)
   get_DisplayForeColor(dispidMember.l)
   put_DisplayForeColor(dispidMember.l)
   get_DisplayBackColor(dispidMember.l)
   put_DisplayBackColor(dispidMember.l)
   get_DisplayMode(dispidMember.l)
   put_DisplayMode(dispidMember.l)
   get_VideoBorder3D(dispidMember.l)
   put_VideoBorder3D(dispidMember.w)
   get_VideoBorderWidth(dispidMember.l)
   put_VideoBorderWidth(dispidMember.l)
   get_VideoBorderColor(dispidMember.l)
   put_VideoBorderColor(dispidMember.l)
   get_ShowGotoBar(dispidMember.l)
   put_ShowGotoBar(dispidMember.w)
   get_ShowStatusBar(dispidMember.l)
   put_ShowStatusBar(dispidMember.w)
   get_ShowCaptioning(dispidMember.l)
   put_ShowCaptioning(dispidMember.w)
   get_ShowAudioControls(dispidMember.l)
   put_ShowAudioControls(dispidMember.w)
   get_CaptioningID(dispidMember.l)
   put_CaptioningID(dispidMember.p-bstr)
   get_Mute(dispidMember.l)
   put_Mute(dispidMember.w)
   get_CanPreview(dispidMember.l)
   get_PreviewMode(dispidMember.l)
   put_PreviewMode(dispidMember.w)
   get_HasMultipleItems(dispidMember.l)
   get_Language(dispidMember.l)
   put_Language(dispidMember.l)
   get_AudioStream(dispidMember.l)
   put_AudioStream(dispidMember.l)
   get_SAMIStyle(dispidMember.l)
   put_SAMIStyle(dispidMember.p-bstr)
   get_SAMILang(dispidMember.l)
   put_SAMILang(dispidMember.p-bstr)
   get_SAMIFileName(dispidMember.l)
   put_SAMIFileName(dispidMember.p-bstr)
   get_StreamCount(dispidMember.l)
   get_ClientId(dispidMember.l)
   get_ConnectionSpeed(dispidMember.l)
   get_AutoSize(dispidMember.l)
   put_AutoSize(dispidMember.w)
   get_EnableFullScreenControls(dispidMember.l)
   put_EnableFullScreenControls(dispidMember.w)
   get_ActiveMovie(dispidMember.l)
   get_NSPlay(dispidMember.l)
   get_WindowlessVideo(dispidMember.l)
   put_WindowlessVideo(dispidMember.w)
   Play()
   Stop()
   Pause()
   GetMarkerTime(MarkerNum.l)
   GetMarkerName(MarkerNum.l)
   AboutBox()
   GetCodecInstalled(CodecNum.l)
   GetCodecDescription(CodecNum.l)
   GetCodecURL(CodecNum.l)
   GetMoreInfoURL(MoreInfoType.l)
   GetMediaInfoString(MediaInfoType.l)
   Cancel()
   Open(bstrFileName.p-bstr)
   IsSoundCardEnabled()
Next()
Previous()
StreamSelect(StreamNum.l)
FastForward()
FastReverse()
GetStreamName(StreamNum.l)
GetStreamGroup(StreamNum.l)
GetStreamSelected(StreamNum.l)
EndInterface

Enumeration
   #Win
   #WebContainer
   #Start 
   #Stop
   
EndEnumeration

Global PlayerWidth= 760
Global PlayerHeight= 600

Define.s File = "Z:\Movies\Andreas Kümmert - Heart Of Stone.mp4"  ; <======= Hier File einsetzen!
Define Container.IUnknown
Define *mp.IMediaPlayer

Global *oFlash
Global State.l

; Datei laden
Import "shell32.lib"
   CompilerIf #PB_Compiler_Unicode
      SHGetSpecialFolderPath_(hwndOwner.l, lpszPath.s, nFolder.l, fCreate.l) As "_SHGetSpecialFolderPathW@16"
   CompilerElse
      SHGetSpecialFolderPath_(hwndOwner.l, lpszPath.s, nFolder.l, fCreate.l) As "_SHGetSpecialFolderPathA@16"
   CompilerEndIf
EndImport

Procedure.s GetSpecialFolder(Folder.l)
   Protected Path.s = Space(#MAX_PATH)
      If SHGetSpecialFolderPath_(#NUL, Path, Folder, #NUL)
         If Right(Path, 1) <> "\" : Path + "\" : EndIf
         ProcedureReturn Path
      EndIf
EndProcedure

File.s = ProgramParameter()
   If FileSize(File) <= 0 Or File = ""
      File = OpenFileRequester("Small MediaPlayer", GetSpecialFolder(#CSIDL_MYVIDEO) + "*.wmv", "*.*", 0)
   EndIf

Import "atl.lib"
   AtlAxWinInit()
   AtlAxCreateControl(lpszName.p-bstr,hWnd.l,*pStream.IStream,*ppUnkContainer.IUnknown)
   AtlAxGetControl(hWnd.l,*pp.IUnknown)
EndImport

CoInitialize_(0)
OpenWindow(#Win, 100, 100, PlayerWidth,PlayerHeight, "" , #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget  | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
CreateGadgetList(WindowID(#Win))
ContainerGadget(#WebContainer, 0, 0, PlayerWidth,PlayerHeight-100) ; This will be our container window, where the ActiveX will be rendered
CloseGadgetList()
ButtonGadget(#Start,0,PlayerHeight-20,80,20,"Start")
ButtonGadget(#Stop,80,PlayerHeight-20,80,20,"Stop")
   If AtlAxWinInit()
      AtlAxCreateControl("MediaPlayer.MediaPlayer.1", GadgetID(#WebContainer), 0, @Container.IUnknown)
         If Container
            AtlAxGetControl(GadgetID(#WebContainer),@*mp.IMediaPlayer)
               If *mp.IMediaPlayer
                     If *mp\QueryInterface(?IID_IMediaPlayer,@*mp.IMediaPlayer) = 0 ; Seien Sie sicher, es ist ein Flash-Objekt in der IE-ploer
                        *mp\put_FileName(File)                                      ; <=== Hier kommt der movie
                        *mp\get_PlayState(@State.l)                                 ; Scheint zurück 4, wenn der Film ist bereit zu spielen, drei andere.
                        Repeat
                           ; Hier Playstatus anzeigen!
                           *mp\get_PlayState(@State.l)
                           Debug"playstate"
                           Debug State.l
                           If state = 0:Break:EndIf
                           
                           Select WaitWindowEvent(100)
                              Case #PB_Event_CloseWindow
                                 Break
                              Case #PB_Event_Gadget
                                 Select EventGadget()
                                    Case #Stop
                                       *mp\Stop()
                                    Case #Start
                                       *mp\Play()
                                 EndSelect
                              Default
                                 If GetAsyncKeyState_(#VK_ESCAPE) : Break : EndIf
                           EndSelect
                        Until WaitWindowEvent() = #PB_Event_CloseWindow
                        *mp\Release()
                     EndIf
                  *mp\Release()
               EndIf
         EndIf
      CloseWindow(#Win)   ; Don't forget this one, else the program will crash
      CoUninitialize_()
      End
   EndIf

DataSection
   IID_IMediaPlayer:  ; {22D6F311-B0F6-11D0-94AB-0080C74C7E95}
   Data.l $22D6F311
   Data.w $B0F6,$11D0
   Data.b $94,$AB,$0,$80,$C7,$4C,$7E,$95
EndDataSection

Was mich noch stört das er nicht zentriert im Container erscheint. Jemand einen TIP???

Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Re: Windows per STOP Taste schliessen

Beitrag von Velindos »

Hallo,
habe die Sache mit comateplus.pbi aufgebaut.
Brauch mal Hilfe, bei der Einstellung COMate_CreateObject läuft er weg aber reagiert nicht! Bei COMate_GetObject blockiert er den Player.

Code: Alles auswählen

;- http://forums.purebasic.com/german/viewtopic.php?p=211656
XIncludeFile "comateplus.pbi"
EnableExplicit

Enumeration
  #Win
  #WebGadget
  #Gadget_Button
EndEnumeration

Global MediaPlayer.COMateObject
Global Quit

Global File.s
Global MediaString$ = "Z:\Movies\Andreas Kümmert - Heart Of Stone.mp4"  ; <======= Hier File einsetzen!
Global PlayerWidth= 600
Global PlayerHeight= 600


Procedure PRESENT_MediaPlayerInside(GGadget,MediaString.s,PlayerWidth,PlayerHeight)
  Protected tmedia.s
  tmedia = "<html>"
  tmedia = "<body topmargin=0 leftmargin=0 scroll='no'>"
  tmedia + "<OBJECT id='MediaPlayer' height='"+PlayerHeight+"' width='"+PlayerWidth+"' classid='clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95'   type='application/x-oleobject'>"
  ;      tmedia + "<OBJECT id='Player' height='"+PlayerHeight+"' width='"+PlayerWidth+"' classid='clsid:20D4F5E0-5475-11D2-9774-0000F80855E6'   type='application/x-oleobject'>"
  ;   tmedia + "<object id='mediaPlayer' width='"+PlayerHeight+"' height='"+PlayerWidth+"' classid='CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6' type='application/x-oleobject'>"
  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 + "<param name='stretchToFit' value='true'>"
  tmedia + "</object>"   
  tmedia + "</body>"   
  tmedia + "</html>"   
  SetGadgetItemText(GGadget, #PB_Web_HtmlCode , tmedia)
EndProcedure

Import "shell32.lib"
  CompilerIf #PB_Compiler_Unicode
    SHGetSpecialFolderPath_(hwndOwner.l, lpszPath.s, nFolder.l, fCreate.l) As "_SHGetSpecialFolderPathW@16"
  CompilerElse
    SHGetSpecialFolderPath_(hwndOwner.l, lpszPath.s, nFolder.l, fCreate.l) As "_SHGetSpecialFolderPathA@16"
  CompilerEndIf
EndImport

Procedure.s GetSpecialFolder(Folder.l)
  Protected Path.s = Space(#MAX_PATH)
  If SHGetSpecialFolderPath_(#NUL, Path, Folder, #NUL)
    If Right(Path, 1) <> "\" : Path + "\" : EndIf
    ProcedureReturn Path
  EndIf
EndProcedure

File.s = ProgramParameter()
If FileSize(File) <= 0 Or File = ""
  File = OpenFileRequester("Small MediaPlayer", GetSpecialFolder(#CSIDL_MYVIDEO) + "*.*", "*.*", 0)
EndIf

Procedure PlayStateChangeEvent(object.COMateObject, eventName.s, parameterCount)
  If MediaPlayer\GetIntegerProperty("PlayState") = 0
    Debug MediaPlayer\GetIntegerProperty("PlayState") 
    Quit = #True
  EndIf
EndProcedure

OpenWindow(#Win,0,0,PlayerWidth,PlayerHeight+100,"MediaPlayer test",#PB_Window_SystemMenu) 
WebGadget(#WebGadget,0,50,PlayerWidth,PlayerHeight,"")

PRESENT_MediaPlayerInside(#WebGadget,file,PlayerWidth,PlayerHeight)

; MediaPlayer = COMate_CreateObject("MediaPlayer.MediaPlayer.1", GadgetID(#WebGadget))

MediaPlayer = COMate_GetObject("MediaPlayer","MediaPlayer.MediaPlayer.1")
; MediaPlayer = COMate_GetObject("MediaPlayer.MediaPlayer.1","MediaPlayer")

MediaPlayer\SetEventHandler("PlayStateChange", @PlayStateChangeEvent())

Repeat
  Select WaitWindowEvent(100)
    Case #PB_Event_CloseWindow
      Break
    Case #PB_Event_Gadget
      Select EventGadget()
      EndSelect
    Default
      If GetAsyncKeyState_(#VK_ESCAPE) : Break : EndIf
  EndSelect
ForEver
Vielleicht kann mir jemand helfen!

Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Re: Windows per STOP Taste schliessen

Beitrag von Velindos »

Hallo Leute,
komme mit dieser Procedure bis zum Zeichen auslesen. 'Wie komme ich zum Button' jemand einen Tip?

Code: Alles auswählen

Procedure.s GetWebCoElementVomHTML(void)
  Protected Browser.IWebBrowser2 
  Protected DocumentDispatch.IDispatch
  Protected Document.IHTMLDocument3
  Protected HTMLElement.IHTMLElement
  Protected HTMLInputElement.IHTMLInputElement
  
  Protected Value.s
  Protected bstr
  Protected HTML.s
  
  CoInitialize_(0)
  Browser.IWebBrowser2 = GetWindowLong_(GadgetID(#WebGadget), #GWL_USERDATA)
  
  If Browser
    If Browser\get_Document(@DocumentDispatch.IDispatch) = #S_OK
      If DocumentDispatch\QueryInterface(?IID_IHTMLDocument3, @Document.IHTMLDocument3) = #S_OK
        If Document\getElementById("MeinTextFeld", @HTMLElement.IHTMLElement) = #S_OK
          If HTMLElement\QueryInterface(?IID_IHTMLInputElement, @HTMLInputElement.IHTMLInputElement) = #S_OK 
            If HTMLInputElement\get_value(@bstr) = #S_OK 
              ; Hier Rückgabe
            EndIf
            HTMLInputElement\Release()
          EndIf
          HTMLElement\Release()
        EndIf
        Document\Release()
      EndIf
      DocumentDispatch\Release()   
    EndIf
    Browser\Release()   
  EndIf
  CoUninitialize_()
  
  ;Rückgabe
  If bstr
    Debug bstr
    Value.s = PeekS(bstr, -1, #PB_Unicode)
    Debug ">>" + Value + "<<"
    SysFreeString_(bstr) 
  EndIf
  
  ProcedureReturn Value
EndProcedure
Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Antworten