sendmessage не работает для jetaudio в vb6 - PullRequest
0 голосов
/ 04 декабря 2011

я пытаюсь реализовать Jetaudio API в vb6 ... я взял значения констант из API SDK ..

Private Declare Function FindWindow Lib "user32.dll" 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

Private Declare Function RegisterWindowMessage _
Lib "user32" Alias "RegisterWindowMessageA" _
(ByVal lpString As String) As Long



Public Const WM_APP As Long = &H8000
Public Const MyMSG As Long = WM_APP + 740


Public Function GetJetAudioSong()
Dim v As Long
Dim JAhwnd As Long


Dim lngMyMsg As Long

lngMyMsg = RegisterWindowMessage(MyMSG)

JAhwnd = FindWindow("COWON Jet-Audio Remocon Class", "Jet-Audio Remote Control")

v = SendMessage(JAhwnd, lngMyMsg, 0, 995)
MsgBox v
End Function

Теперь FindWindow () работает, потому что JAhwnd установленсо значением ... это просто sendmessage (), который, кажется, не работает ...

код предполагает msgbox номер версии для работающего экземпляра Jet Audio.

Я занимался этим уже несколько дней, и у меня нет возможности убедиться, что эта ошибка - вещь VB или нет ... Я принимаю слово SDK от Jet Audio о том, что значения const верны ...

значение v всегда равно 0, где оно должно быть 6 в моей системе.что я делаю не так?

Ответы [ 3 ]

0 голосов
/ 07 декабря 2011

Какая версия Windows? SendMessage и SendKeys больше не работают с кодом VB6, начиная с Windows Vista и выше. Сделайте поиск Google для этого.

0 голосов
/ 03 ноября 2013

Я знаю, что это на 2 года позже.Пожалуйста, используйте это как справочник для всех, кто читает это в будущем.

Исправление вашей проблемы заключается в следующем:

'[ Use 'ByVal' for your lParam to make sure you are passing the actual value not the Reference
v = SendMessage(JAhwnd, lngMyMsg, 0, ByVal 995)

'[ Or you could perform PostMessage(..) and not use ByVal
v = PostMessage(JAhwnd, lngMyMsg, 0, 995)

Кроме того, я НАСТОЯТЕЛЬНО рекомендую против тех, кто использует SendKeys.API - это правильный метод, который гарантирует, что вы отправляете сообщение правильному hWnd.Я бы предложил использовать SendKeys только в отчаянии;это может случиться.

0 голосов
/ 04 декабря 2011

Не звоните RegisterWindowMessage, MyMSG - это номер сообщения, которое вы должны отправить в окно Jet-Audio.

Private Declare Function FindWindow Lib "user32.dll" 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

Public Const WM_APP As Long = &H8000
Public Const MyMSG As Long = WM_APP + 740

Public Function GetJetAudioSong()
Dim v As Long
Dim JAhwnd As Long

Dim lngMyMsg As Long

JAhwnd = FindWindow("COWON Jet-Audio Remocon Class", "Jet-Audio Remote Control")

v = SendMessage(JAhwnd, MyMSG, 0, 995)
MsgBox v
End Function
...