Announcement

Collapse
No announcement yet.

Winamp fernsteuern

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Winamp fernsteuern

    Hallo,


    ich habe einen kleinen rechner in meine stereo anlage eingebaut, darauf läuft winamp als player, gibt es eine möglichkeit das ich winamp über meinen anderen rechner über das netzwerk fernsteuern kann ? wie müsst ich soetwas programieren ?
    Zuletzt editiert von Christian Marquardt; 06.08.2012, 06:53.

  • #2
    du schreibst 2 programme...
    eines was auf dem rechner mit winamp liegt ( sozusagen als server )
    und das andere mit dem du es von dem anderen steuerst ( client )

    server:
    - du musst eine server-socket verbindung öffnen, um anfragen vom client empfangen zu können
    - wenn eine anfrage kommt wie z.B. ein text: "Play" ...führst du einfach mit ShellExecute() winamp aus...

    client:
    - sendet über client-socket an den server z.B. texte die dann auf dem server verarbeitet werden...

    ist eigentlich ganz einfach...
    wenn du wissen willst wie das mit den sockets funzt...
    schau einfach mal in den delphi beispiel ordner...
    dort ist irgendwo ein chat beispiel... das mit socket verbindungen funzt...
    ansonsten mail mir einfach

    Gruß Hendrik
    <I>[email protected]</I&gt

    Comment


    • #3
      Folgende Botschaften müssen zum steuern von Winamp an das Winamp-HauptFenster geschickt werden:

      #ifndef _WAFE_H_
      #define _WAFE_H_

      #define WM_WA_IPC WM_USER

      #define IPC_GETVERSION 0

      int version = SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_GETVERSION );

      #define IPC_DELETE 101

      /*
      ** SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_DELETE);
      **
      ** You can use IPC_DELETE to clear Winamp's internal playlist.
      */

      #define IPC_STARTPLAY 102

      /*
      ** SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_STARTPLAY) ;
      **
      ** Using IPC_STARTPLAY is like hitting 'Play' in Winamp, mostly.
      */

      #define IPC_ISPLAYING 104

      /*
      ** int res = SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_ISPLAYING) ;
      **
      ** IPC_ISPLAYING returns the status of playback.
      ** If it returns 1, it is playing. if it returns 3, it is paused,
      ** if it returns 0, it is not playing.
      */

      #define IPC_GETOUTPUTTIME 105

      /*
      ** int res = SendMessage(hwnd_winamp,WM_WA_IPC,mode,IPC_GETOUTP UTTIME);
      **
      ** IPC_GETOUTPUTTIME returns the position in milliseconds of the
      ** current song (mode = 0), or the song length, in seconds (mode = 1).
      ** Returns -1 if not playing or error.
      */

      #define IPC_JUMPTOTIME 106

      /* (requires Winamp 1.60+)
      ** SendMessage(hwnd_winamp,WM_WA_IPC,ms,IPC_JUMPTOTIM E);
      ** IPC_JUMPTOTIME sets the position in milliseconds of the
      ** current song (approximately).
      ** Returns -1 if not playing, 1 on eof, or 0 if successful
      */

      #define IPC_WRITEPLAYLIST 120

      /* (requires Winamp 1.666+)
      ** SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_WRITEPLAYL IST);
      **
      ** IPC_WRITEPLAYLIST writes the current playlist to <winampdir>\\Winamp.m3u,
      ** and returns the current playlist position.
      ** Kinda obsoleted by some of the 2.x new stuff, but still good for when
      ** using a front-end (instead of a plug-in)
      */

      #define IPC_SETPLAYLISTPOS 121

      /* (requires Winamp 2.0+)
      ** SendMessage(hwnd_winamp,WM_WA_IPC,position,IPC_SET PLAYLISTPOS)
      **
      ** IPC_SETPLAYLISTPOS sets the playlsit position to 'position'.
      */

      #define IPC_SETVOLUME 122

      /* (requires Winamp 2.0+)
      ** SendMessage(hwnd_winamp,WM_WA_IPC,volume,IPC_SETVO LUME);
      **
      ** IPC_SETVOLUME sets the volume of Winamp (from 0-255).
      */

      #define IPC_SETPANNING 123

      /* (requires Winamp 2.0+)
      ** SendMessage(hwnd_winamp,WM_WA_IPC,panning,IPC_SETP ANNING);
      **
      ** IPC_SETPANNING sets the panning of Winamp (from 0 (left) to 255 (right)).
      */

      #define IPC_GETLISTLENGTH 124

      /* (requires Winamp 2.0+)
      ** int length = SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_GETLISTLEN GTH);
      **
      ** IPC_GETLISTLENGTH returns the length of the current playlist, in
      ** tracks.
      */

      #define IPC_SETSKIN 200

      /* (requires Winamp 2.04+, only usable from plug-ins (not external apps))
      ** SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)"skinnam e",IPC_SETSKIN);
      **
      ** IPC_SETSKIN sets the current skin to "skinname". Note that skinname
      ** can be the name of a skin, a skin .zip file, with or without path.
      ** If path isn't specified, the default search path is the winamp skins
      ** directory.
      */

      #define IPC_GETSKIN 201

      /* (requires Winamp 2.04+, only usable from plug-ins (not external apps))
      ** SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)skinname _buffer,IPC_GETSKIN);
      **
      ** IPC_GETSKIN puts the directory where skin bitmaps can be found
      ** into skinname_buffer.
      ** skinname_buffer must be MAX_PATH characters in length.
      ** When using a .zip'd skin file, it'll return a temporary directory
      ** where the ZIP was decompressed.
      */

      #define IPC_EXECPLUG 202

      /* (requires Winamp 2.04+, only usable from plug-ins (not external apps))
      ** SendMessage(hwnd_winamp,WM_WA_IPC,(WPARAM)"vis_fil e.dll",IPC_EXECPLUG);
      **
      ** IPC_EXECPLUG executes a visualization plug-in pointed to by WPARAM.
      ** the format of this string can be:
      ** "vis_whatever.dll"
      ** "vis_whatever.dll,0" // (first mod, file in winamp plug-in dir)
      ** "C:\\dir\\vis_whatever.dll,1"
      */

      #define IPC_GETPLAYLISTFILE 211

      /* (requires Wi

      Comment


      • #4
        Hi Freakz,

        gibt es eine Winamp-API für Delphi, mit der man die Funktionen von Winamp ansprechen kann ???

        Wäre mal wieder sehr denkbar für irgendwelche Tips.

        Grüsse,
        Carste

        Comment


        • #5
          Hallo,

          ich weiss nicht, ob es noch interesant ist.<br>

          auf der Seite vom WinAmp (www.winamp.com) unter der Rubrik Delevopment finded man eine Beschreibung zur Winamp-Schnittstelle.

          Damit habe ich mir zwei Programme zur Fernsteuerung gebaut.

          Gruß Fran

          Comment


          • #6
            (Mit Borland)
            Hi also...
            Wenn ich dich richtig verstehe, willst du nen eigenes Programm schreiben, welches dann z.B. winamp steuert... oder?

            Naja bin da auch gerade bei... da ich nicht so wirklich viel infos gefunden habe habe ich mich durch die Winamp SDK geprügelt...

            Dort Findest du IPC_Befehle und Commandos für Winamp!

            Mittels diesen könntest du via einem externen Programm "ansteuern"

            Dies geht über das Handle von Winamp "Winamp v1.x"
            (ein Handle kannst du herausfinden indem du z.B. den ProzessExplorer von Sysinternals benutzt oder von Visual C++ gibts nen Handle ermittlung programm SD++ oder so... von Borland weis ich nicht ^^)

            So zum Handle:
            Deklarieren:

            HANDLE hwnd_winamp;

            ^-- Typ ^-- DeinHandle

            Danach Winamp "Finden" (Muß gestartet werden kannst via Shellexecute machen oder manuell)

            hwnd_winamp = FindWindow("Winamp v1.x",NULL);

            ^-- Handle Wert übergeben in dein angelegtes Handle

            Dann kannst du nun deinen Befehl übermitteln:

            z.B. abspielen eines Liedes Mittels Winamp:
            SendMessage(hwnd_winamp,WM_COMMAND,40045,0);

            Oder abspielen des ersten liedes in der Liste:
            SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_STARTPLAY) ;

            MFG
            Denni

            Comment


            • #7
              (Mit Borland)
              Hi also...
              Zur winampsteuerung hier ne kleine Einleitung ^^ falls du es noch benötigst ^^

              Naja bin da auch gerade bei... da ich nicht so wirklich viel infos gefunden habe habe ich mich durch die Winamp SDK geprügelt...

              Dort Findest du IPC_Befehle und Commandos für Winamp!

              Mittels diesen könntest du via einem externen Programm "ansteuern"

              Dies geht über das Handle von Winamp "Winamp v1.x"
              (ein Handle kannst du herausfinden indem du z.B. den ProzessExplorer von Sysinternals benutzt oder von Visual C++ gibts nen Handle ermittlung programm SD++ oder so... von Borland weis ich nicht ^^)

              So zum Handle:
              Deklarieren:

              HANDLE hwnd_winamp;

              ^-- Typ ^-- DeinHandle

              Danach Winamp "Finden" (Muß gestartet werden kannst via Shellexecute machen oder manuell)

              hwnd_winamp = FindWindow("Winamp v1.x",NULL);

              ^-- Handle Wert übergeben in dein angelegtes Handle

              Dann kannst du nun deinen Befehl übermitteln:

              z.B. abspielen eines Liedes Mittels Winamp:
              SendMessage(hwnd_winamp,WM_COMMAND,40045,0);

              Oder abspielen des ersten liedes in der Liste:
              SendMessage(hwnd_winamp,WM_WA_IPC,0,IPC_STARTPLAY) ;

              MFG
              Denni

              Comment


              • #8
                ups sorry wegen doppelt post... explorer spinnte..

                Comment


                • #9
                  Hallo Franz,

                  ist das ein Delphi-Beispiel? Kannst Du mir das evtl an meine Mail-Adresse schicken? [email protected]

                  Vielen Dank!

                  PS: Wenn nicht, wer hat ein Delphi-Beispiel zur einfachen Ansteuerung von Winamp und würde mir dieses schicken? Geht um Winamp 2.90

                  Comment


                  • #10
                    Abend.


                    Bin auf meiner Suche im Internet über diesen älteren Post gestolpert und dachte, ich belebe diesen wieder.

                    Augenblicklich versuche ich selbst über eine SPS des Herstellers Siemens und einem angeschlossenen TouchPanel das Winamp meines PC's zu steuern.
                    Interessant wäre dieser Anwendungsfall für eine Haussteuerung.
                    Die Steuerung und der PC sind über eine CP340 direkt per serieller Schnittstelle verbunden.

                    Seitens der SPS kann ich jegliche Art von ASCII-String an den PC senden.
                    Der Ordnung halber will ich aber nur gleich lange Strings erzeugen/verwenden.
                    Andernfalls wirkt das wie hingebastelt....

                    Am PC würde ich mir ein kleines C++ Programm basteln, welches meinen eingehenden String empfängt, und entsprechend der oben genannten Steuerbefehle an Winamp weitergibt. Zurückgegeben sollte die Bestätigung der Steuerbefehle, die laufende Zeit des jeweiligen Titels und der Name des Liedes werden.

                    Meine Wahl fällt deshalb auf C++, da ich vor Jahren bereits kleinere Programme damit gebastelt habe. Augenblicklich arbeite ich nur mit Siemens Simatic, CodeSys, etc., daher sind meine Kenntnisse etwas eingerostet.

                    Hat eventuell jemand ein ähnliches Programm zur Hand und könnte mir diese als Stütze zusenden oder würde mir grundlegend bei der Entwicklung helfen?


                    mfg,
                    Andy

                    Comment

                    Working...
                    X