2011-12-04 162 views
0

工作JetAudio轉換我想實現在VB6的軟件JetAudio API ... 我已經採取了從SDK API常量的值..SendMessage函數不是在VB6

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的字,值的const是正確的..

v的值始終爲0,在我的系統上應該是6。 我做錯了什麼?

回答

0

不要撥打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 
+0

謝謝,但沒有它沒有工作...我試着你的代碼...多數民衆贊成我是如何做到這一點之前,我讀了一些地方,在VB6我必須註冊之前,通過SendMessage發送消息。那麼現在呢? –

0

什麼是Windows版本? SendMessage和SendKeys不再適用於從Windows Vista及更高版本開始的VB6代碼。 對Google進行搜索。

+0

Windows 7 32位......它奇怪的你說... winamp SDK使用sendmessage(),它工作正常。 –

0

我知道這是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;這有可能發生。