All pastes #1468432 Raw Edit

segin

public text v1 · immutable
#1468432 ·published 2009-06-21 05:45 UTC
rendered paste body
Function WAIntProc StdCall(hWnd As HWND, uMsg As UINT, wParam As WPARAM, lParam As LPARAM) As LRESULT
   Printf(!"hwnd = %#x, umsg = %d, wParam = %#x, lParam = %#x\n",hWnd, uMsg, wParam, lParam)
   Select Case uMsg
      Case WM_USER
         printf(!"WM_USER caught.\n")
   End Select
End Function

Sub InitKVIrcWinampInterface Alias "InitKVIrcWinampInterface" ()
   Static WAWindow As HWND
   Dim As WNDCLASSEX WAClass 
   Dim As ATOM a
   Dim As Dword WINERR
   
   With WAClass 
      .cbSize = SizeOf(WNDCLASSEX)
      .style = 0
      .lpfnWndProc = @WAIntProc
      .cbClsExtra = 0
      .cbWndExtra = 0
      .hInstance = GetModuleHandle(NULL)
      .hIcon = 0
      .hCursor = 0 
      .hbrBackground = 0
      .lpszMenuName = NULL
      .lpszClassName = @"Winamp v1.x"
      .hIconSm = 0
   End With
   
   a = RegisterClassEx(@WAClass)
   
   printf(!"RegisterClassEx(&WAClass) returned %#x.\n", a) 
   
   If a = 0 Then
      WINERR = GetLastError()
      Dim As ZString Ptr ErrMsg
      FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER Or FORMAT_MESSAGE_FROM_SYSTEM, 0, WINERR, 0, @ErrMsg, 256, 0)
      printf(!"Error %#x: %s\n", WINERR, ErrMsg)
   EndIf
   
   WAWindow = CreateWindowEx(0, "Winamp v1.x","PsyMP3 Winamp Interface Window - Winamp", _
                             0, 0, 0, 0, 0, 0, 0, GetModuleHandle(NULL), 0)
                             
   printf(!"CreateWindowEx(...) returned %#x.\n", WAWindow)
   printf(!"FindWindow(\"Winamp v1.x\",NULL) returned %#x.\n", FindWindow("Winamp v1.x",NULL))
                              
End Sub

Sub ClearWMP()
   Dim cpd As CopyData
   Dim wmsg As WString * 500
   Dim msgr As HWND
   Dim Found As Integer
   wmsg = "PsyMP3\0Music\00\0PsyMP3: Not playing\0\0\0\0\0"
   cpd.dwData = 1351
   cpd.cbData = (Len(wmsg) * 2) + 2 
   cpd.lpData = @wmsg
   Do
      msgr = FindWindowEx(HWND_MESSAGE, msgr,"MsnMsgrUIManager", 0)
      If msgr = 0 Then
         Do
            msgr = FindWindowEx(0, msgr,"MsnMsgrUIManager", 0)
            If msgr = 0 Then
               If Found = 0 Then Printf(!"Cannot find messenger for announce!\n")
               Exit Do, Do
            EndIf
            SendMessage(msgr, WM_COPYDATA, 0, @cpd)
            Found = 1
         Loop
      EndIf
      SendMessage(msgr, WM_COPYDATA, 0, @cpd)
      Found = 1
   Loop
End Sub

Sub AnnounceWMP(artist As String, Title As String, Album As String)
   Dim cpd As CopyData
   Dim msgr As HWND
   Dim Found As Integer
   Dim wmsg As WString * 500
   Dim As WString * 30 WMContentID = "WMContentID"
   Dim As WString * 500 MSNMusicString = !"PsyMP3\\0Music\\0%d\\0%s\\0%s\\0%s\\0%s\\0%s\\0"
   Dim As WString * 100 FormatStr = "PsyMP3: {1} - {0}"

   Dim As WString * 500 WTitle, WArtist, WAlbum
   MultiByteToWideChar(CP_UTF8, 0, StrPtr(artist), Len(artist), WArtist, Len(artist))
   MultiByteToWideChar(CP_UTF8, 0, StrPtr(Title), Len(Title), WTitle, Len(Title))
   MultiByteToWideChar(CP_UTF8, 0, StrPtr(Album), Len(Album), WAlbum, Len(Album))
   wsprintfW(wmsg, MSNMusicString, 1, FormatStr, WTitle, WArtist, WAlbum, WMContentID) 
   cpd.dwData = 1351
   cpd.cbData = (Len(wmsg) * 2) + 2 
   cpd.lpData = @wmsg
   Do
      msgr = FindWindowEx(HWND_MESSAGE, msgr, "MsnMsgrUIManager", 0)
      If msgr = 0 Then
         Do
            msgr = FindWindowEx(0, msgr,"MsnMsgrUIManager", 0)
            If msgr = 0 Then
               If Found = 0 Then Printf(!"Cannot find messenger for announce!\n")
               Exit Do, Do
            EndIf
            SendMessage(msgr, WM_COPYDATA, 0, @cpd)
            Found = 1
         Loop
      EndIf
      SendMessage(msgr, WM_COPYDATA, 0, @cpd)
      Found = 1
   Loop
End Sub