Jos haluat tehdä sovelluksen joka tietää mitä kappaletta Winamp soittaa, esimerkiksi soitettujen kappaleiden listausta ja tilastointia varten, tässä on esimerkki miten tieto kaivetaan. Tämän pitäisi toimia kaikkien Winampin versioiden kanssa.
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long Private Const lpClassName = "Winamp v1.x" Private Const strTtlEnd = " - Winamp" Private Function HaeWinampKappale() As String Dim hwnd As Long hwnd = FindWindow(lpClassName, vbNullString) 'etsitään winamp Dim lpText As String * 100 If hwnd = 0 Then 'ei löytynyt HaeWinampKappale = "Ei kappaletta" Exit Function End If Dim intLength As Integer intLength = GetWindowText(hwnd, lpText, Len(lpText)) 'haetaan kappaleen nimi If (intLength <= 0) Or (intLength > Len(lpText)) Then 'ei onnistunut HaeWinampKappale = "Tuntematon" Exit Function End If 'oletetaan että onnistui, luetaan alusta todellinen teksti Dim strTitle As String strTitle = Mid$(lpText, 1, intLength) 'otetaan vielä mahdollisesti ylimääräinen Winamp teksti lopusta pois Dim winampViiva As Integer winampViiva = InStr(1, strTitle, strTtlEnd, vbTextCompare) If winampViiva > 1 Then strTitle = Left$(strTitle, winampViiva) End If HaeWinampKappale = Trim$(strTitle) End Function
Entäs jos winampissa soi kappale nimeltä "Ei kappaletta" tai "Tuntematon" tai semmonen jossa on "- Winamp" nimessä? :)
No sitten se sanoo että kappaleen nimi on "Ei kappaletta" tai "Tuntematon". (Mutta näyttää kyllä lisäksi kappaleen numeron) Jos siellä on "- Winamp" se ottaa sen pois, niin kuin tarkoituksella tuohon koodasin.
hmm mähän tommosen oon tehnykki.. :O
Hohoo, enpäs tota sillon joskus ajatellutkaan, että noinkin vois tehä. Tuolla mun yhessä koodivinkissä on tuo fawkzilta (onkohan se Putkassa vielä fawkz vai thefox...) ripattu Winampin APIa käyttävä koodi...
https://www.ohjelmointiputka.net/koodivinkit/
Aihe on jo aika vanha, joten et voi enää vastata siihen.