Björn Höhrmann: per php winamp ansteuern?

Beitrag lesen

ich habe eine ziemlich spezielle idee, ich möchte per php den winamp-player ansteuern. besser gesagt, ich möchte, dass man auf der website (im lan) songs auswählen kann und diese in eine playlist im winamp importiert werden.. hat das jemand eine idee, wie ich das machen könnte?

Ich weiss nicht ob PHP entsprechende Module mitbringt, mit denen man Windows auf der API-Ebene ansprechen kann. Perl tut das und ich habe mir mal ein Modul geschrieben, das es mir in Kombination mit anderen Modulen erlaubt, Winamp über diverse Extratasten meines Notebooks zu kontrollieren. Das Modul sieht prinzipiell so aus:

package My::Win32::Winamp;

use 5.006;
use strict;
use warnings;
use Win32::GUI;

use constant WINAMP_PREV  => 40044;
use constant WINAMP_NEXT  => 40048;
use constant WINAMP_PLAY  => 40045;
use constant WINAMP_STOP  => 40047;
use constant WINAMP_PAUSE => 40046;
use constant WINAMP_VOLUP => 40058;
use constant WINAMP_VOLDN => 40059;

use constant WM_USER      => 0x400;

require Exporter;

our @ISA = qw(Exporter);
our $VERSION = '0.01';

sub new    { bless{}, shift }
sub winamp { Win32::GUI::FindWindow('Winamp v1.x', '') }

sub play_or_pause
{
    my $self = shift;
    my $state = Win32::GUI::SendMessage($self->winamp, WM_USER, 0, 104);
    $state == 1 ? $self->pause : $self->play
}

sub stop  { Win32::GUI::PostMessage(shift->winamp, WM_COMMAND, WINAMP_STOP,  0) }
sub prev  { Win32::GUI::PostMessage(shift->winamp, WM_COMMAND, WINAMP_PREV,  0) }
sub next  { Win32::GUI::PostMessage(shift->winamp, WM_COMMAND, WINAMP_NEXT,  0) }
sub play  { Win32::GUI::PostMessage(shift->winamp, WM_COMMAND, WINAMP_PLAY,  0) }
sub pause { Win32::GUI::PostMessage(shift->winamp, WM_COMMAND, WINAMP_PAUSE, 0) }

sub vol_up
{
    my $self = shift;
    my $perc = shift;
    $perc ||= 4;
    Win32::GUI::SendMessage($self->winamp, WM_COMMAND, WINAMP_VOLUP,  0) for 1..$perc;
}

sub vol_down
{
    my $self = shift;
    my $perc = shift;
    $perc ||= 4;
    Win32::GUI::SendMessage($self->winamp, WM_COMMAND, WINAMP_VOLDN,  0) for 1..$perc;
}

sub DESTROY { }

1;
__END__