[VB6]ClipInc mit SendMessage fernsteuern...

Hallo,
ich höre gerne mal Musik am Computer gerne auch mal beim zocken. Also dachte ich mir erstmal nimsmte die Hotkeys auf der Tastatur um nen lied zu skippen. Nur leider blocken immer mehr spiele diese Tasten, sodass ich angefangen habe mir nen Programm was auf WinLirc aufsetzt zu schreiben um meine Fernbedieung für sowas zu missbrauchen.


In letzter Zeit höre ich gerne mal Webradio über ClipInc und wenn mir nen Lied nicht gefällt muss ich erstmal ClipInc öffnen und dann auf nächstes Lied drücken.
Da dachte ich mir, steuerste das mal ähnlich wie bei Winamp Fern. Also Spy++ auf und los ging es. Scheinbar ist ClipInc sehr Grafisch und deswegen sind manche Knöpfe mehr oder weniger in einem Handle, genauso wie Play, Next, Last auf einem Sind. Da dachte ich mir egal, kannst ja Mausklicks an eine bestimmte Position per SendMessage senden. Pustekuche, scheinbar geht das nicht. Entweder mein Code ist falsch, meiner meinung nach ist der Funktionstüchtig, da er in Spy++ die gleichen aufrufe macht wie bei einem manuellen Klick.

Hat jmd eine Idee woran es liegt? Evtl ne andere Möglichkeit es fernzusteuern?
Hier der QuellCode

Code:
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Const GWL_ID = -12

Private Declare Function PostMessage Lib "user32.dll" _
                 Alias "PostMessageA" ( _
                 ByVal hwnd As Long, _
                 ByVal wMsg As Long, _
                 ByVal wParam As Long, _
                 ByVal lParam As Long) As Long
                 
Private Declare Function SendMessageLong& Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long)
Const WM_MOUSEMOVE = &H200
Const WM_LBUTTONDOWN = &H201
Const WM_LBUTTONUP = &H202
Const WM_SETCURSOR = &H20
Const WM_MOUSEACTIVATE = &H21

Private Sub Command1_Click()
 Dim ClipIncHandle As Long
 Dim ButtonHandle As Long
 Dim ButtonID As Long
 
 Debug.Print ""
 Debug.Print "-<->-"
 ClipIncHandle = FindWindowWild("*ClipInc Player", False)
 Debug.Print "ClipInc Handle:" & ClipIncHandle
 

 Do
 ButtonHandle = FindWindowEx(ClipIncHandle, ButtonHandle, "#tobitControlBar", "")
 ButtonID = GetWindowLong(ButtonHandle, GWL_ID)
 If ButtonID = 125 Then

 Call SendMessageLong&(ButtonHandle, WM_SETCURSOR, 10880862, 33619969)
 Debug.Print PostMessage(ButtonHandle, WM_MOUSEMOVE, 0, MAKELPARAM(12, 12))
 Call SendMessageLong&(ButtonHandle, WM_SETCURSOR, 2230216, 33619969)
 Debug.Print PostMessage(ButtonHandle, WM_LBUTTONDOWN, 1, MAKELPARAM(12, 12))
 Debug.Print PostMessage(ButtonHandle, WM_MOUSEMOVE, 1, MAKELPARAM(12, 12))
 Debug.Print PostMessage(ButtonHandle, WM_LBUTTONUP, 0, MAKELPARAM(12, 12))
 Debug.Print "Button Handle, ID:" & ButtonHandle & "," & ButtonID
 
 End If
 
 DoEvents
 Loop Until ButtonHandle = 0
 
 
 
End Sub

Public Function MAKELPARAM(ByVal wLow As Long, ByVal wHigh As Long) As Long
        MAKELPARAM = LoWord(wLow) Or (&H10000 * LoWord(wHigh))
End Function
  
Public Function LoWord(ByVal lDWord As Long) As Long
        If lDWord And &H8000& Then
            LoWord = lDWord Or &HFFFF0000
        Else
            LoWord = lDWord And &HFFFF&
        End If
End Function
 
Zurück
Oben