mtb4ever
Goto Top

Mit C-Sharp aktuellen WimAmp Titel auf Internet Seite wiedergeben

Hallo, also ich hbe folgendes vor. Ich benutze Winamp und möchte auf einer Seite (in mein Fall www.schueler.cc) in der Statusleiste "Was machst du gerade?" anzeigen lassen welches Lied ich gerade höre (also nach automatischer eingabe des Titels muss auch der button "hinzufügen" geklickt werden). möchte das ganze mit c# umsetzen.
Ich habe bis jetzt folgenden Quelltext der mir den aktuellen Titel von Winamp in ein label in der C# Form ausgibt.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            
        }
        [System.Runtime.InteropServices.DllImport("user32.dll",  
          CharSet = System.Runtime.InteropServices.CharSet.Auto)]
        public static extern IntPtr FindWindow(string lpClassName,
          string lpWindowName);

        [System.Runtime.InteropServices.DllImport("user32.dll",  
          CharSet = System.Runtime.InteropServices.CharSet.Auto)]
        public static extern int GetWindowText(IntPtr hwnd,
          string lpString, int cch);

        const string lpClassName = "Winamp v1.x";  
        const string strTtlEnd = " - Winamp";  

        static string GetSongTitle()
        {
            IntPtr hwnd = FindWindow(lpClassName, null);
            if (hwnd.Equals(IntPtr.Zero)) return "Not running";  

            string lpText = new string((char)0, 100);
            int intLength = GetWindowText(hwnd, lpText, lpText.Length);

            if ((intLength <= 0) || (intLength > lpText.Length))
                return "unknown";  

            string strTitle = lpText.Substring(0, intLength);
            int intName = strTitle.IndexOf(strTtlEnd);
            int intLeft = strTitle.IndexOf("[");  
            int intRight = strTitle.IndexOf("]");  

            if ((intName >= 0) && (intLeft >= 0) && (intName < intLeft) &&
                (intRight >= 0) && (intLeft + 1 < intRight))
                return strTitle.Substring(intLeft + 1, intRight - intLeft - 1);

            if ((strTitle.EndsWith(strTtlEnd)) &&
                  (strTitle.Length > strTtlEnd.Length))
                strTitle = strTitle.Substring(0,
                    strTitle.Length - strTtlEnd.Length);

            int intDot = strTitle.IndexOf(".");  
            if ((intDot > 0) && IsNumeric(strTitle.Substring(0, intDot)))
                strTitle = strTitle.Remove(0, intDot + 1);

            return strTitle.Trim();
        }

        static bool IsNumeric(string Value)
        {
            try
            {
                double.Parse(Value);
                return true;
            }
            catch
            {
                return false;
            }
        }


        private void button1_Click(object sender, EventArgs e)
        {
            label1.Text = GetSongTitle();
        }

    }
}

Jetzt weiß ich aber nicht wie ich auf die Internetseite zugreifen kann und dort den Titel einfüge und dann auf den Button klicke. Diese Aktion müste am besten nach jeden Lied passieren.

Kann mir einer helfen ?

MfG MTB

Content-Key: 108079

Url: https://administrator.de/contentid/108079

Printed on: April 25, 2024 at 15:04 o'clock

Mitglied: 14695
14695 Feb 16, 2009 at 09:08:06 (UTC)
Goto Top
Hmm...
Wie "läuft" denn die Seite, die die Information darstellen soll: Welcher Webserver, einfaches HTML?
Member: -Ohforf
-Ohforf Feb 17, 2009 at 11:49:11 (UTC)
Goto Top
Zitat von @MTB4ever:
Jetzt weiß ich aber nicht wie ich auf die Internetseite
zugreifen kann und dort den Titel einfüge und dann auf den Button
klicke.

Wie greifst du denn für gewöhnlich auf die Seite zu?

FTP / Baukasten / ...?
Member: MTB4ever
MTB4ever Feb 17, 2009 at 15:31:14 (UTC)
Goto Top
Hi ist ja nicht meine Webseite. Gewöhnlich gehe ich mit den Firefox drauf Log mich ein un dann bearbeite ich die Statusleiste manuell sprich rein klicken text schreiben und dann auf OK Button.
Member: -Ohforf
-Ohforf Feb 18, 2009 at 15:25:57 (UTC)
Goto Top
Man könnte diesen Vorgang automatisieren,
insofern kein Captcha dazwischenfunkt.

Ich bin mir aber recht sicher, das die Betreiber
das garnicht gerne sehen werden.
Member: MTB4ever
MTB4ever Feb 18, 2009 at 15:49:46 (UTC)
Goto Top
Captcha hängt soweit ich weiß nicht dazwischen ... glaub nicht das das die betreiber stören wird .... ob ich jetzt nun alle 3-4min meine statusnachricht mnuell änder oder ob das automatich geschieht kommt aufs selber hinaus
Mitglied: 14695
14695 Feb 19, 2009, updated at Oct 18, 2012 at 16:37:46 (UTC)
Goto Top
Aha... Sollte "kein Problem" sein:

1.
Du musst dich an der Seite anmelden. Das ist ein bisschen fummelig, geht aber. Bei "normalen" Seiten werden die Accountdaten in der URL übertragen. Das sieht dann im Klartext z. B. so aus:

anmelden.de/login.php?username=user&passwort=passwort

(Das ist übrigens auch der Grund, warum man seine Anmeldedaten nur über eine per SSL gesicherte Verbindung schicken sollte.)

Du musst dir also mal aus der Quelle der Seite heraussuchen, was der Server wohl erwartet.

2.
Hast du das geschafft, funktioniert der Eintrag deines "Status" auf dieselbe Art und Weise. Die URL könnte z. B. so aussehen:

anmelden.de/statusaendern.php?status=online&ichbin=gut%20drauf

Das "%20" in der URL ist eine Escape-Sequenz. Meint: unsichere Zeichen (Leerzeichen, Umlaute, Sonderzeichen etc.) werden maskiert. "%20" steht z. B. für das Leerzeichen ("ichbin" beudete also im Klartext "gut drauf".

Du solltes beim programmatischen Aufruf von Links darauf achen, dass du unsichere Zeichen vorher maskiert hast. Sonst gibt's noch Fehlermeldungen oder sonst einen Salat...

3.
Den Aufruf von URL (ohne Browser, willst ja nichts anzeigen) realisierst du am besten per System.Net.WebRequest. Ein Beispiel für die Verwendung der Klasse findest du hier

Meld dich nochmal, was du letzlich gemacht hast.

In diesem Sinne,
if (problem == solved)
{ Application.Exit(); }
Member: MTB4ever
MTB4ever Feb 19, 2009 at 15:04:46 (UTC)
Goto Top
ich teste das mal wenn ich wieder zeit habe ... is nur für freizeit un im mom is mit arbeit en bissle stressig ... trotzdem danke für die tipps