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) Static As Integer msgptr, lastcall Static As ZString * 4096 buf Select Case uMsg Case 273 ' Remote control function s Select Case As Const wParam Case &h9c70 doCommand = PSYMP3_PLAY_NEXT Case &h9c6d If isPaused = 1 Then doCommand = PSYMP3_PAUSE Case &h9c6e doCommand = PSYMP3_PAUSE Case &h9c6f doCommand = PSYMP3_STOP Case &h9c6c doCommand = PSYMP3_PLAY_PREV End Select Case WM_USER 'printf(!"WM_USER caught.\n") If wParam = KVIRC_WM_USER Then Select Case lParam Case KVIRC_WM_USER_CHECK Return KVIRC_WM_USER_CHECK_REPLY Case KVIRC_WM_USER_GETTITLE lastcall = KVIRC_WM_USER_GETTITLE buf = mp3artist + " - " + mp3name Return Len(buf) Case KVIRC_WM_USER_GETFILE lastcall = KVIRC_WM_USER_GETTITLE ' TODO: Sanitize output Dim As Integer i buf = "" For i = 0 To Len(mp3file) - 1 Select Case mp3file[i] Case 32 buf &= "%20" Case Asc("\") buf &= "/" Case Asc("[") buf &= "%5b" Case Asc("]") buf &= "%5d" Case Else buf &= Chr(mp3file[i]) End Select Next 'buf = mp3file Return Len(buf) Case KVIRC_WM_USER_TRANSFER To KVIRC_WM_USER_TRANSFER + 4096 msgptr = lParam - KVIRC_WM_USER_TRANSFER Return buf[msgptr] End Select EndIf Select Case lParam Case 106 Return FSOUND_Stream_SetTime(stream, wParam) Case 125 ' IPC_GETLISTPOS Return Songlist.getPosition() Case 124 ' IPC_GETLISTLENGTH Return Songlist.getEntries() Case 105 ' IPC_GETOUTPUTTIME Select Case wParam Case 0 ' Current playing time in msec. Return FSOUND_Stream_GetTime(stream) Case 1 ' Length of song in seconds. Return Int(FSOUND_Stream_GetLengthMs(stream)/1000) End Select Case 251 ' IPC_GET_REPEAT Return doRepeat Case 253 ' IPC_SET_REPEAT If wParam = 0 Or wParam = 1 Then doRepeat = wParam Case 104 ' IPC_ISPLAYING Select Case As Const isPaused Case 1 Return 3 Case 0 Return 1 Case 2 Return 0 End Select Case Else Return 0 End Select Case WM_GETMINMAXINFO ' printf(!"WM_GETMINMAXINFO caught.\n") Return 0 Case Else Return DefWindowProc(hWnd, uMsg, wParam, lParam) End Select End Function