22. maj 1999 - 19:40Der er
10 kommentarer og 1 løsning
API kommando til WinAmp
Hejsa... Det er efter mange forsøg med API kommandoen SendMessage() endnu ikke lykkedes mig, at få tiden returneret. Jeg er gået frem efter flere eksempler, der skulle virke på WinAmp. Jeg kan godt få kommandoer til at virke, men når jeg forsøget at få tiden returneret, så får jeg blot værdien 1, lige meget hvad jeg gør... Er der nogen, der kan sige mig hvorfor?
Jeg mener at have læst i en readme fil der følger med Winamp (meget gammel version) at man ikke skal bruge SendMessage() men en anden udgave af den, prøver lige at finde den.
Endelig fundet det jeg manglede (fre fronyen.txt) i ver. 1.8 (ikke til at finde)
Så nu går jeg igang, der stod bland andet:
/* A little about Visual Basic In VB, the SendMessage function does not work, you must use the SendMessageTimeout. Otherwise, VB will not wait for WinAmp to return a value. Here's an example... Dim Success as Long Dim ReturnValue As Long Success = SendMessageTimeout(WinampHandle, WM_USER, 0, 104, SMTO_BLOCK, 1000, ReturnValue) MsgBox (ReturnValue) If you are sending commands, use this format; Dim Success as Long Success = PostMessage(WinampHandle, WM_COMMAND, 40022, 0) // -VB notes by Amal G. */
Hvis du sender din e-mail add. så kan jeg sende dig hele projectet (med alle de features man kan bruge fra VB til at styre Winamp med) når jeg engang biver færdig.
'---------------------------------------- ' Module1.bas '---------------------------------------- Declare Function FindWindow Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function SendMessageTimeout Lib "user32" Alias "SendMessageTimeoutA" _ (ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long, _ ByVal fuFlags As Long, ByVal uTimeout As Long, lpdwResult As Long) As Long
Public Const SMTO_BLOCK = &H1
Public Const WM_USER = &H400 Public Const WM_WA_IPC = WM_USER Public Const IPC_GETOUTPUTTIME = 105
'---------------------------------------- ' Form1.frm '---------------------------------------- Dim hwnd_winamp as Long
Dim msg As String Dim Success As Long Dim ReturnValue As Long
Success = SendMessageTimeout(hwnd_winamp, WM_WA_IPC, 0, IPC_GETOUTPUTTIME, SMTO_BLOCK, 1000, ReturnValue) If Not Success = 0 Then msg = "Current position in the song: " & ReturnValue & " Sec" & vbNewLine ReturnValue = vbNull Else MsgBox "Error" End If
Success = SendMessageTimeout(hwnd_winamp, WM_WA_IPC, 1, IPC_GETOUTPUTTIME, SMTO_BLOCK, 1000, ReturnValue) If Not Success = 0 Then msg = msg & "Length of the song: " & ReturnValue & " Sec" ReturnValue = vbNull Else MsgBox "Error" End If MsgBox msg End Sub
Det var så lidt, det er faktiskt meget let at oversætte C++ kode til VB, prøv selv at se i Frontend.txt, der ligger i samme Dir. som Winamp, og det burde være meget nemt at forstå,hvis du bruger ovenstående skabalon, men hvis du kun skal sende "Messages" til Winamp uden at få svar tilbage skal du bruge PostMessage
Sender du ikke lige det program du er ved at lave, så man kan fået smugkig af det, på Visual_Basic@michael-jensen.dk
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.