API de Winamp (IPC_PLAYFILE) & Visual Basic?!? [Résolu]

iboz 3 Messages postés jeudi 23 décembre 2004Date d'inscription 31 décembre 2004 Dernière intervention - 30 déc. 2004 à 02:34 - Dernière réponse : cs_salazar 241 Messages postés mercredi 1 octobre 2003Date d'inscription 19 février 2006 Dernière intervention
- 14 juin 2005 à 20:00
Hello tout le monde,

J'utilise une base de données avec tous mes albums et je voudrais lancer une chanson autrement qu'avec un shell... qui à chaque fois bloque le pc pendant 1 à 2s bien chiant quoi!! ;)

Et j'ai vu dans la doc api de winamp que l'on pouvait envoyer une chanson à winamp en utilisant le code ci-dessous :

Mais big question comment l'adapter à vb?!? et surtout est-ce possible?!?

/*
** Some API calls tend to require that you send data via WM_COPYDATA
** instead of WM_USER. Such as IPC_PLAYFILE:
*/

#define IPC_PLAYFILE 100

/*
** COPYDATASTRUCT cds;
** cds.dwData = IPC_PLAYFILE;
** cds.lpData = (void *) "file.mp3";
** cds.cbData = strlen((char *) cds.lpData)+1; // include space for null char
** SendMessage(hwnd_winamp,WM_COPYDATA,(WPARAM)NULL,(LPARAM)&cds);
**
** This will play the file "file.mp3".
**
*/

Merci pour votre aide!!!
Afficher la suite 

3 réponses

iboz 3 Messages postés jeudi 23 décembre 2004Date d'inscription 31 décembre 2004 Dernière intervention - 31 déc. 2004 à 02:40
+3
Utile
Bon je me réponds encore à moi même!!! lol

En fait tout le code ci-dessus fonctionne bien. Je croyais envoyer la chanson et qu'ensuite winamp la jouait mais il ne fait que l'ajouter à la playlist! Et comme la playlist de winamp était caché je voyais rien! ;)

Donc pour moi j'ai juste a faire :

Public Const IPC_DELETE = 101

'Efface la playlist
SendMessage hwndWinamp, WM_WA_IPC, 0, IPC_DELETE
'Envoyer la chanson à winamp
SendMessageStr hwndWinamp, WM_COPYDATA, Me.hwnd, data
'Commencer la lecture
SendMessage hwndWinamp, WM_WA_IPC, 0, IPC_STARTPLAY

Bon mon frontend WinAmp, ZoomPlayer, ProgDVB/WatchTVPro commence à prendre forme ;)

Encore merci à moi-même lol
Cette réponse vous a-t-elle aidé ?  
iboz 3 Messages postés jeudi 23 décembre 2004Date d'inscription 31 décembre 2004 Dernière intervention - 30 déc. 2004 à 19:14
0
Utile
Bon j'ai bien un début mais...

*******
Module1
*******
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long
Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Public Const WM_COPYDATA = &H4A
Public Const IPC_PLAYFILE = 100

Type COPYDATASTRUCT
dwData As Long
cbData As Long
lpData As String
End Type

*****
Form1
*****
Private Sub Command1_Click()
Dim hwndWinamp As Long
Dim data As COPYDATASTRUCT
Dim s As String
s = "c:\file.mp3"
data.dwData = IPC_PLAYFILE
data.lpData = s
data.cbData = Len(s) + 1
hwndWinamp = FindWindow("Winamp v1.x", vbNullString)
SendMessage hwndWinamp, WM_COPYDATA, Me.hwnd, data
End Sub

Winamp est bien ouvert, j'ai bien un fichier file.mp3 dans c:\ mais rien ne se passe?!? :(
Pourquoi???

Merci à la personne qui pourra me venir en aide!!! ;)
cs_salazar 241 Messages postés mercredi 1 octobre 2003Date d'inscription 19 février 2006 Dernière intervention - 14 juin 2005 à 20:00
0
Utile
Ta transcription de COPYDATASTRUCT de vc vers vb m'interesse. Es tu certain de la syntaxe suivante, car elle me génère un message d'erreur de type :
SendMessageStr hwndWinamp, WM_COPYDATA, Me.hwnd, data

Je pense qu'il y a une confusion entre el vc et le vb, mais laquelle ??? Peux tu m'aider ?

Merci

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.