Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Управление Winamp из VB (http://forum.oszone.net/showthread.php?t=138054)

Vovchick1 18-04-2009 13:53 1097485

Управление Winamp из VB
 
Вообщем есть клавиатура с мультимидийными клавишами (PLAY_PAUSE, STOP, PREV_TRACK, NEXT_TRACK), и Winamp v2.76, предполагается использовать данные клавиши для управления Winamp(ом). Программу я впринципе написал, и она вполне нормально функционирует, только есть одна проблемка, на клавиатуре PLAY и PAUSE висят на одной клавише, а в Winamp они разделены. Изтого что я нашёл в инете следует что можно с помощью конструкции скажем “W=SendMessage( FhWnd, WM_USER, 0, 104)” узнать текущее состаяние плеера “W=1” играет, ”W=3”пауза. Но у меня данная функция всегда возвращает 1. Ни кто не сталкивался с чем-то подобным может ответ я должен забирать с помощью какой-нибудь другой функции. Заранее благодарен всем!!!

Admiral 21-04-2009 15:19 1100050

Vovchick1,
а если пойти не по пути программирования...
ставить Винамп более новой версии, оставлять её со встроенным глобальным хуком клавиш идущим в Winamp Agent, или оставив последнюю заменить исполняемый файл и зависимые библиотеке из директории с установленным v2.76
Впрочем если используется версия 2.76, вариант с установкой новой версии врятле интересен.

VB get Winamp status? ответы получают как раз с помощью данной функции. Используют 5ю версию.
Я проверил на 5.5 - текущее состояние определяет корректно, на версии 2.76 не проверял.

Vovchick1 21-04-2009 16:49 1100151

Admiral
Спасибо за ответ, можеш скинуть конструкцию с помощью которой определял состояние, может я неверно её записал.

Цитата:

Впрочем если используется версия 2.76, вариант с установкой новой версии врятле интересен.
Это точно, мне Winamp нужен исключительно для музыки, а начиная кажется с 3го он начал ещё и видео брать, короче некатит :)

Admiral 21-04-2009 17:29 1100185

Vovchick1 конечно.
Основан на коде из поста от QOAL по ссылке выше из предыдущего поста.
Код:

Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Const WM_USER = &H400
Const WA_GETSTATUS = 104
Dim hWndWinAMP As Long
Function WinAMP_GetStatus() As String
    Dim Status As Long
   
    Status = SendMessage(hWndWinAMP, WM_USER, 0, WA_GETSTATUS)
   
    Select Case Status
      Case 1
          WinAMP_GetStatus = "PLAYING"
      Case 3
          WinAMP_GetStatus = "PAUSED"
      Case Else
          WinAMP_GetStatus = "STOPPED"
    End Select
End Function
Private Sub Command1_Click()
WAClass = "Winamp v1.x" 'Users can change winamp class with a command line IRRC, so yeah.
hWndWinAMP = FindWindow(WAClass, vbNullString)
If hWndWinAMP <> 0 Then
    MsgBox WinAMP_GetStatus
Else
    MsgBox "Could not find Winamp!", vbOKOnly, "WA Status"
End If
End Sub

Минимальные изменения в шапке, что б VB6 не ругался, и переназначил вызов проверки состояния на кнопку.
Кажется в 2.95, или чуть раньше в линейки 2.9х, появилась возможность смотреть видео. А для более ранних версий есть плугин позволяющие смотреть видео.
Не 3я версия это отдельная история, 5ка по шустрее будет. Мне Винамп на некотором видео (в основном *.wmv) показывает без тормозов где vlc подтормаживает.

Vovchick1 21-04-2009 17:55 1100213

Admiral
Сеньк работает!!!! :)
Похоже вот вчём ошибка была, API Viewer выдал не то описание функции:
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 Declare Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Admiral 21-04-2009 18:21 1100231

Vovchick1 рад что смог помочь.
Приятного прослушивания музыки.
Спасибо за обратную связь.


Время: 15:10.

Время: 15:10.
© OSzone.net 2001-