winamp длительность трека

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
uin23
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 16.09.2005 (Пт) 15:15
Откуда: Нижний Новгород

winamp длительность трека

Сообщение uin23 » 16.09.2005 (Пт) 15:18

пытаюсь получить длительность трека в winamp через API (система win2000, winamp 2.81, vb6)

Код: Выделить всё
Public Const WM_Play = 40045
Private Const IPC_GETOUTPUTTIME = 105
Private Const WM_WA_IPC = &H400
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Public hWnd_m1 As Long
Public Function test()
    Shell ("G:\work\vb\winamp\player2\winamp.exe")    'запускаем winamp
    hWnd_m1 = FindWindow("Winamp v1.x", vbNullString)    'ищем winAmp
    SendMessage hWnd_m1, WM_COMMAND, WM_Play, vbNull
    Debug.Print SendMessage(hWnd_m1, WM_WA_IPC, 1, IPC_GETOUTPUTTIME)
End Function

в итоге всегда получаю 1, в чем момет быть проблема???

uin23
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 16.09.2005 (Пт) 15:15
Откуда: Нижний Новгород

Сообщение uin23 » 16.09.2005 (Пт) 15:32

пытаюсь получить любой параметр - везде 1

Код: Выделить всё
    Debug.Print SendMessage(hWnd_m1, WM_WA_IPC, 0, 104) ' returns 1 for playing, 3 for paused, 0 for stopped
    Debug.Print SendMessage(hWnd_m1, WM_WA_IPC, 1, 105) ' returns track length in seconds
    Debug.Print SendMessage(hWnd_m1, WM_WA_IPC, 0, 105) ' returns position in the current track in milliseconds
    Debug.Print SendMessage(hWnd_m1, WM_WA_IPC, 0, 124) ' returns number of songs in playlist
    Debug.Print SendMessage(hWnd_m1, WM_WA_IPC, 0, 125) ' returns the currently playing track number
    Debug.Print SendMessage(hWnd_m1, WM_WA_IPC, 0, 126) ' returns the currently playing song's sample rate
    Debug.Print SendMessage(hWnd_m1, WM_WA_IPC, 1, 126) ' returns the currently playing song's bit rate
    Debug.Print SendMessage(hWnd_m1, WM_WA_IPC, 3, 126) ' returns the currently playing song's sample rate

uin23
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 16.09.2005 (Пт) 15:15
Откуда: Нижний Новгород

Сообщение uin23 » 16.09.2005 (Пт) 15:44

походу разобрался сам.Проблемма в объявленн функции SendMessage:
Код: Выделить всё
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

точнее в последнем параметре, было:
Код: Выделить всё
lParam As Any

нужно:
Код: Выделить всё
ByVal lParam As Long

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 16.09.2005 (Пт) 15:46

Можно было оставить As Any.
Только надо было тогда писать
SendMessage(hWnd_m1, WM_WA_IPC, 1, ByVal IPC_GETOUTPUTTIME)
Lasciate ogni speranza, voi ch'entrate.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, SemrushBot и гости: 7

    TopList