Request mit WinHttp zu MPC senden

  • Hi,
    Ich versuche schon seit einiger Zeit MediaPlayerClassic, mit Hilfe der eingebauten Webschnittstelle, zu steuern - komm aber nicht weiter :(

    Wenn MPC geöffnet, und der Port 13579 eingestellt ist, kann man MPC über eine Webseite steuern, was auch super funktioniert.
    http://localhost:13579/controls.html

    Ich würde gern nur einen einzelnen Befehl (entspricht drücken eines Buttons) direkt zum MPC senden, ohne dass dabei ein Browser geöffnet sein muss.
    Ich hab aber leider keinen Plan wie man einen HTML-Code zerlegen muss, damit das senden auch funktioniert.

    z.B. Button: Next Track

    Code
    <td>
      <form method="POST" action="/command.html">
    	<input type="submit" onclick="postForm(922,'null',0); return false;" name="submit" value=">>I"></input>
    	<input type="hidden" value="922" name="wm_command"></input>
      </form>
    </td>
    [autoit]

    #include "WinHTTP.au3"

    [/autoit][autoit][/autoit][autoit]

    Global $hOpen = _WinHttpOpen()
    Global $hConnect = _WinHttpConnect($hOpen, "localhost", 13579) ;http://localhost:13579/controls.html
    Global $hRequest = _WinHttpOpenRequest($hConnect, "POST","???") ;
    _WinHttpSendRequest($hRequest, "???", "???")

    [/autoit][autoit][/autoit][autoit][/autoit]


    Die Verbindung mit dem Webserver funktioniert. Aber beim Rest stehe ich komplett auf dem Schlauch.

    Kann mir da bitte jemand auf die Sprünge helfen.

    Greez t.

    Einmal editiert, zuletzt von tnuctipun (21. März 2014 um 07:46)

  • Drück mal F12 bevor du das im Browser absendest und bei Network Profiler (je nach Browser) auf Aufnehmen klicken und wenn das Paket abgesendet ist pausieren.
    Da ist das gesamte Packet abgebildet, und du kannst die entsprechenden Pakete nachbilden.

    Der Request sollte in etwa so aussehen

    [autoit]

    $sPacketResponse = _WinHttpSimpleRequest($hConnect, "POST", "command.html", Default, "derteilderimpacketuntenabgebildetist")

    [/autoit]
  • Ich benutze den Firefox 21.0 - mit F12 passiert gar nichts.
    Aber ich vermute mal, dass in der "Web-Konsole" -> "Netzwerkzugriffe aufzeichnen" die richtigen Infos liefert:

    Code
    [00:07:18.231] POST http://localhost:13579/command.html [HTTP/1.0 302 Found 149ms]

    Unter "Netzwerk-Request untersuchen" -> "Gesendete Formulardaten" steht dann:

    Code
    wm_command:922
    null:0

    Ich vermute stark, dass "wm_command:922" ein wichtiger Teil des Befehls sein sollte, da im MPC in den Tastenbelegungen die ID 922 für den Befehl "Vorwärts" angezeigt wird.

    Leider kein Erfolg (hab auch einige Varianten versucht) ?(

    [autoit]

    $sPacketResponse = _WinHttpSimpleRequest($hConnect, "POST", "controls.html", Default, "wm_command:922")

    [/autoit]
  • Man kann es sich aber auch kompliziert machen :)
    Im Startpost ist doch schon der Name und ein möglicher Wert für den Parameter zu sehen. Wozu da noch grossartig was aufzeichen?

    [autoit]

    $oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
    $oHTTP.Open("POST", "http://localhost:13579/command.html", False)
    $oHTTP.Send("wm_command=800")

    [/autoit]

    Alle für wm_command möglichen Werte findest du im Quelltext der Seite.

    Spoiler anzeigen