PDA

Orijinalini görmek için tıklayınız : winamp aktif çalma listesine erişim


EdiGariS
19.06.07, 13:32
Winamptaki aktif liste C:\Program Files\Winamp\winamp.m3u dosyasında tutulur.

Çalan şarkıyı almak için elimde olan C# kodunu vereyim siz ordan yola çıkıp kendi yazdığınız dilde çözüm bulabilirsiniz


[System.Runtime.InteropServices.DllImport("user32.d ll", CharSet = System.Runtime.InteropServices.CharSet.Auto)]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

[System.Runtime.InteropServices.DllImport("user32.d ll", 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();
}


Fonksiyonun mantığı şu "Winamp v1.x" sınıf adına sahip pencereyi FindWindow ile bulup handle değerini alıyor. Daha sonra pencerede yazan yazıyı GetWindowText ile alıp işliyor. Çalan şarkıyı değiştirmek ses kısmak-açmak aktif şarkının playlistdeki sırasını almak gibi şeyleri Winamp'a mesaj göndererek elde edebilirsiniz. Winamp SDK'da yeterli bilgi var. Forumlarındada biraz gezerseniz yapmaya çalıştığınız şey muhtemelen birkaç kişi tarafından yapılmıştır. Onlardan yardım alabilirsiniz.