Hallo,
ich versuche verzweifelt, bei laufendem Winamp mit C# herauszufinden, welcher Titel gerade läuft. Hier mein Code:
private string musicText()
{
StringBuilder temp = new StringBuilder(255);
Process[] processes = Process.GetProcessesByName("winamp");
foreach (Process p in processes)
{
IntPtr pFoundWindow = p.MainWindowHandle;
Win32.GetWindowText(pFoundWindow, temp, 255);
}
return (temp.ToString());
}
Das funktioniert zwar, hat aber leider einen Haken: Wenn Winamp minimiert ist und nur im Tray angezeigt wird funktioniert es eben nicht. Hat jemand noch eine Idee, wie man das realisieren könnte, ohne dass es darauf ankommt wie Winamp gerade angezeigt wird?
Vielen Dank und Gruss,
Thomas
Du kannst direkt auf Winamp zugreifen. Ich bin mir ziemlich sicher, dass Informationen zum gerade laufenden Lied verfügbar sind. Nähere Informationen findest du vermutlich im Winamp SDK.
Hallo Thomas
Hast du schon auf der offiziellen Seite geschaut?
Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011
Du musst das Fenster mit der Fensterklasse "Winamp v1.x" suchen (::FindWindow). Von dem kannst du nun den Fenstertitel lesen (::GetWindowText) oder du kannst Nachrichten an das Fenster schicken, um Tracklänge, Position, PlayState, Bitrate usw. zu ermitteln oder Aktionen auszulösen (Play, Pause, Next, Shuffle...). Letzteres ist im Winamp SDK schön beschrieben. Was du brauchst ist die Datei winamp/wa_ipc.h, da stehen alle Messages drin.
Einzig wenn du den Dateinamen des aktuellen Titels haben willst, dann wird's etwas aufwändiger. Denn da man mit Messages keine Zeichenketten abrufen kann (Prozessgrenze!), kannst du Winamp eine Nachricht senden, seine Playlist zu schreiben und den aktuellen Trackindex zurückzugeben. Dann musst du die Playlist-Datei noch finden und kannst sie auslesen (M3U-Format). Das klappt aber auch ganz gut, ist unter Vista nur etwas tricky, wegen Dateisystem-Virtualisierung oder sonstwas.
Vielen Dank für eure Hinweise... ich werde versuchen, die Informationen an den genannten Stellen zu finden und hoffe, dass meine Kenntnisse dafür ausreichen 🙂