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 FunctionEntä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.