| |
VB.NET - Ein- und UmsteigerLaufenden MediaPlayer steuern | | | Autor: matthes_92 | Datum: 09.05.11 14:13 |
| Hallo,
ich würde gerne einen bereits gestarteten Windows Media Player (12) per VB.Net steuern. Das, was ich über Google fand, bezog sich immer darauf, per Code eine neue Instanz des WMP zu erstellen. Wie ich aber einen laufenden WMP ansprechen und steuern kann weiß ich nicht.
Hintergrund: ich will eine kleine Desktop-App schreiben mit der ich den WMP steuern kann und die wichtigsten Infos ablesen kann ohne den WMP anzeigen zu müssen, also zB ID3-Tags des gerade spielenden Lieds usw, da es das ja beim WMP 12 nicht mehr in der Form wie beim WMP 11 gibt.
Danke schonmal,
matthes_92
Beitrag wurde zuletzt am 09.05.11 um 14:14:14 editiert. | |
Re: Laufenden MediaPlayer steuern | | | Autor: matthes_92 | Datum: 09.05.11 17:55 |
| So, mal ein kleines Update:
Steuern ist jetzt kein Problem, man sendet einfach per SendMessage einen WM_COMMAND mit bestimmten wParams, zB entspricht &H4978 dem Play/Pause-Button. Allerdings fehlt mir immer noch die Möglichkeit, Infos aus dem WMP auszulesen (Wiedergabestatus, aktueller Titel...). Kennt da vll jemand eine Lösung? | |
Re: Laufenden MediaPlayer steuern | | | Autor: matthes_92 | Datum: 10.05.11 15:46 |
| Danke für die Links!
Mit der WMPLib hab ich auch schon ein bisschen rumgespielt, allerdings hab ich da wieder das Problem, nicht auf einen vom Benutzer gestarteten WMP zugreifen zu können, sondern nur auf meinen eigenen MediaPlayer im Programm. Allerdings bin ich gerade zufällig über die wmpuice.dll gestolpert (C:\Windows\system32). Die ist eigentlich genau das was ich brauche.
Dim wmp = New wmpuiceLib.WMPApp
Dim player = wmp.Core
MsgBox(player.playstate) Damit kann ich zumindest schon mal den Wiedergabestatus abfragen. Mehr Member von wmp.Core kenn ich aber leider nicht. Gibt es da ein Programm dass mir IntelliSense-like die Member auflistet?
Sry wenn die Fragestellung jetzt etwas anders ist als in der Überschrift...
Mfg | |
Re: Laufenden MediaPlayer steuern | | | Autor: matthes_92 | Datum: 14.05.11 17:28 |
| So, ich bins nochmal ;)
Habs jetzt hingekriegt, für die die es auch mal irgendwann brauchen hab ich hier mal den Code auskommentiert:
Public Class Form1
Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal _
hWnd As IntPtr, ByVal Msg As IntPtr, ByVal wParam As IntPtr, ByVal lParam _
As IntPtr) As IntPtr
Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal _
lpClassName As String, ByVal lpWindowName As String) As IntPtr
Const WMP_PLAYPAUSE As Long = &H4978
Const WMP_STOP As Long = &H4979
Const WMP_NEXT As Long = &H497B
Const WMP_PREV As Long = &H497A
Const WMP_PLAYSPEED1 As Long = &H4994
Const WMP_PLAYSPEED2 As Long = &H4993
Const WMP_PLAYSPEED3 As Long = &H4992
Const WMP_RANDOM As Long = &H499A
Const WMP_REPEAT As Long = &H499B
Const WMP_VOLUP As Long = &H497F
Const WMP_VOLDOWN As Long = &H4980
Const WMP_MUTE As Long = &H4981
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MyBase.Load
'### Methode mit SendMessage
'Dim handle As IntPtr = FindWindow("WMPlayerApp", "Windows Media" & _
"Player")
'SendMessage(handle, &H111, WMP_PLAYSPEED2, &H0)
'###
Dim wmp = New wmpuiceLib.WMPApp
Dim player = wmp.Core
MsgBox(wmp.Running) 'WMP gestartet?
player.controls.play() 'Play-Befehl
MsgBox(player.playstate) 'Wiedergabestatus (0 = ?, 1
' = Gestoppt, 2 = Pausiert, 3 = Wiedergabe)
MsgBox(player.CurrentPlaylist.Name) 'Name der aktuellen
' Wiedergabeliste
For i = 0 To player.CurrentPlaylist.Count - 1
ListBox1.Items.Add(player.currentPlaylist.item(i).name.ToString)
Next
Dim track = player.CurrentMedia 'Liefert das aktuelle Lied
' als Object
MsgBox(track.Name) 'Titel
MsgBox(track.getItemInfo("Author")) 'Interpret
MsgBox(track.getItemInfo("WM/AlbumTitle")) 'Album
MsgBox(track.durationString) 'Dauer des Lieds als String
MsgBox(track.getItemInfo("WM/Genre")) 'Genre
MsgBox(track.getItemInfo("WM/Year")) 'Jahr
MsgBox(track.getItemInfo("Description")) 'Beschreibung (?)
MsgBox(track.getItemInfo("Bitrate")) 'Bitrate in bit/sec (
' Umrechnung: Wert / 1000)
ListBox1.SelectedItem = track.Name
TrackBar1.Maximum = track.Duration
Timer1.Start()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Timer1.Tick
Dim wmp = New wmpuiceLib.WMPApp
Dim player = wmp.Core
Dim pos = player.controls.currentPosition 'Aktuelle Position in
' Sekunden (Double)
TrackBar1.Value = CInt(pos)
Label1.Text = player.controls.currentPositionString
End Sub
Private Sub TrackBar1_Scroll(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles TrackBar1.Scroll
Dim wmp = New wmpuiceLib.WMPApp
Dim player = wmp.Core
player.controls.currentPosition = TrackBar1.Value
End Sub
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles ListBox1.DoubleClick
Dim wmp = New wmpuiceLib.WMPApp
Dim player = wmp.Core
player.controls.PlayItem(player.currentPlaylist.item( _
ListBox1.SelectedIndex))
End Sub
End Class Die Konstanten hab ich nur noch mal dabeigelassen falls jemand mit SendMessage arbeitet ;)
lg, matthes | |
Re: Laufenden MediaPlayer steuern | | | Autor: Volker Bunge | Datum: 13.04.18 20:05 |
| Hallo zusammen,
bin auch gerade dabei, mit dem WMP - Controll eine Anwendung zu schreiben.
Haben WMP 12.0.7601.23517 installiert und das Control AxWMPLib.AxWindowsMediaPlayer installiert und auch eingebunden. Filme und Musik kann ich auch schon abspielen, sogar die Lautstärke über eine HScrollbar steuern.
Jetzt will ich aber noch mit eigenen Controls speziel die Position in einem Video / Musik ansteuern.
Kurz gesagt: Wo bekomme ich die o. g. wmpuice.dll legal her? Die Seiten im Internet wollen immer eine extra Software installieren, mit der man die DLL downloaden kann. Klappt leider aktuell nicht.
Kann evtl. von Euch jemand diese hier einstellen oder mit zusenden?
Vielen Dank
Volker
P.S.: Arbeite mit Visual Basic 2010 Express, Win 7 32Bit | |
Re: Laufenden MediaPlayer steuern | | | Autor: visualfx | Datum: 14.04.18 21:52 |
| Hallo Volker,
die Wmpuice.dll gibt es nicht mehr, die Postings hierzu sind auch schon aus dem Jahr 2011 !!!
Um den Media-Player zu steuern gibt es aber Windows-eigene DLLs: Wmp.dll bzw. Wmp*.dll
- die DLLs liegen im System-Ordner von Windows
- bei Windows 7 32 Bit also in: C:\Windows\System
Gruß, Stefan
Beitrag wurde zuletzt am 14.04.18 um 21:58:05 editiert. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
Neu! sevCommand 4.0
Professionelle Schaltflächen im modernen Design!
Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|