Java Kontrolle über Wiedergabe von Medien in verschiedenen Windows Playern

nailos

Lt. Junior Grade
Registriert
Juli 2010
Beiträge
496
Hallo!

ich möchte mit in Java einen beliebigen, aktiven Player auf einem Windows Rechner kontrollieren.
Sprich wenn zB Foobar läuft und ich in Java eine Pause-Funktion aufrufe soll Foobar das Abspielen anhalten.

Man stelle sich das genau so vor, die die Mediatasten auf einer Tastatur, da gibts ja auch immer Play/Pause, Stop, Vorheriger, Nächster, Lauter, Leiser usw.

Genau so ein Siganl möchte ich von Java ans System senden.

LG nailos
 
Ohne es zu wissen denk ich würdest du im .NET-Bereich (näher an Win32) das leichter hinbekommen...
 
Ja brauche es aber in Java :D

Ich weiß nicht, ob das was ist:
https://code.google.com/p/jintellitype/

Aber von dem was ich lese scheint das in die andere Richtung zu gehen, sprich mein Java Programm reagiert auf ein Signal von der Tastatur und sendet nicht eben ein solches Signal die die Tastatur.

LG
 
Ansonsten könntest du es vielleicht mit der "Robot"-Klasse versuchen. Damit kannst du allerdings nur Benutzereingaben simulieren, müsstest halt mal schauen ob du damit dein Ziel erreichst.
 
Grantig schrieb:
Was du willst kannst du mit Windows Messages erreichen, insbesondere WM_APPCOMMAND.
Senden kannst du diese per SendMessage. Wenn du der Methode als Handle HWND_BROADCAST (0xffff) übergibst, wird die Message an alle Toplevel Fenster gesendet.

WinAPI Methoden aus Java heraus aufrufen kannst du mit JNA (Java Native Access).

Ohje das is ein bisschen viel Input ;)

Also ich versuche mal zusammenzufassen:
Um WinAPI Funktionen nutzen zu können brauche ich die Bibliothek JNA.
Mit dieser kann ich die Funktion SendMessage() aufrufen, welche mit dem Parameter HWND_BROADCAST(0xffff) an alle Fenster sendet.

Klingt soweit gut, aber ich glaube ich brauche etwas mehr Information:
Ich frag mal ganz salopp "Wie rufe ich denn SendMessage() auf?" (auf die Gefahr hin, dass ihr mir Lesefaulheit unterstellt).
Man findet nur ziemlich viel dazu und ich brauche ja was ziemlich spezifisches...

LG nailos
 
Wenn du wissen willst wie du die JNA lib nutzt, würde ich mal das durchlesen: Getting Started with JNA
Hier hat jemand als Antwort Beispielcode für einen SendMessage call gepostet: stackoverflow

Weil ich die Idee ganz nützlich finde hab ich ne kleine Klasse geschrieben, die die Mediaplayer Grundfunktionen abdeckt.
Allerdings in C#, da es mir in Java nix bringen würde. (ich wills ja schließlich auch selbst verwenden). Außerdem finde ich Java für WinAPI calls eher weniger geeignet.
Ich denke aber, dass man das meiste fast 1 zu 1 in Java übernehmen kann (mit etwas refactoring).
Die Klasse ist im Anhang, habs auch kurz getestet, funktioniert bei mir mit dem WMP, Spotify, Zune und VLC.

Das mit dem Broadcast hab ich weggelassen, da es wohl doch eher ne Schnapsidee ist irgendwelche commands an alle Fenster zu senden.
Stattdessen werden die app commands an das Hauptfenster eines bestimmten Prozess gesendet.

Ich hoffe das hilft dir etwas ;)
 

Anhänge

Zuletzt bearbeitet: (Ergänzungen, Rechtschreibfehler ausgebessert)
Danke ich gucks mir morgen mal an :)
 
Zurück
Oben