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-ID: 108079

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

Ausgedruckt am: 22.11.2024 um 10:11 Uhr

14695
14695 16.02.2009 um 10:08:06 Uhr
Goto Top
Hmm...
Wie "läuft" denn die Seite, die die Information darstellen soll: Welcher Webserver, einfaches HTML?
-Ohforf
-Ohforf 17.02.2009 um 12:49:11 Uhr
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 / ...?
MTB4ever
MTB4ever 17.02.2009 um 16:31:14 Uhr
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.
-Ohforf
-Ohforf 18.02.2009 um 16:25:57 Uhr
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.
MTB4ever
MTB4ever 18.02.2009 um 16:49:46 Uhr
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
14695
14695 19.02.2009, aktualisiert am 18.10.2012 um 18:37:46 Uhr
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(); }
MTB4ever
MTB4ever 19.02.2009 um 16:04:46 Uhr
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