sendmessage在vb6中不适用于jetaudio

sendmessage在vb6中不适用于jetaudio,vb6,sendmessage,Vb6,Sendmessage,我正在尝试在vb6中实现Jetaudio API。。。 我已经从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" Al

我正在尝试在vb6中实现Jetaudio API。。。 我已经从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设置了一个值。。。 只是发送的消息似乎不起作用

该代码假定为msgbox运行的Jet Audio实例的版本号

我已经做了好几天了,我无法确定这个错误是不是VB的东西。。。我接受Jet Audio的SDK的说法,即const的值是正确的

在我的系统中,v的值始终为0,在这里它应该是6。 我做错了什么?

不要调用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
什么Windows版本? SendMessage和SendKeys不再适用于从Windows Vista及更高版本开始的VB6代码。
用谷歌搜索一下。

我知道现在已经晚了两年。请将此作为将来阅读此文章的任何人的参考

解决您的问题的方法如下:

'[ 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发送消息的正确方法。我建议只有在绝望时才使用SendKey;这是可能发生的。

谢谢,但不,它不起作用。。。我试过你的密码。。。这就是我在读到VB6的某个地方之前的做法,在通过SendMessage发送消息之前,我必须先注册消息。那么现在呢?windows 7 32位。。。奇怪的是你说。。。winamp SDK使用sendmessage,工作正常。