Bonjours a tous!
j'ai un probleme que je n'arrive pas a resoudre et je ne trouve pas d'aide nul part pour ca!
je vais mettre mon code
en gros ca cherche les playlist de winamp les affiche a l'ecran
(jusqu'a 50 max)
ca ouvre le premier playlist trouver et j'essai de faire un renderfile du mp3 du playlist
c'est en win32 console app
#include <windows.h>
#include <string.h>
#include <tchar.h>
#include <stdlib.h>
#include <stdio.h>
#include <wchar.h>
#include <conio.h>
#include <atlbase.h>
#include <dshow.h>
#include <iostream.h>
#include <malloc.h>
#define SAFE_RELEASE(i) {if (i) i->Release(); i = NULL;}
void lister(LPCTSTR fichier);
void file_load();
void kill_dshow();
BOOL file_render(LPTSTR szMusicFile);
TCHAR nom[50][MAX_PATH]; //contient nom des playlists
IGraphBuilder *pGraph=NULL;
IMediaControl *pControl=NULL;
IMediaEvent *pEvent=NULL;
HRESULT hr;
int main(void)
{
CoInitialize(NULL);
lister("c:\\*.m3u");
CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPROC_SERVER,
IID_IGraphBuilder,(void**)&pGraph);
hr=pGraph->QueryInterface(IID_IMediaControl,(void**)&pControl);
if(FAILED(hr))
{
cout<<"erreur Query IMediaControl";
pGraph->Release();
pGraph=NULL;
CoUninitialize();
return 0;
}
hr=pGraph->QueryInterface(IID_IMediaEvent,(void**)&pEvent);
if(FAILED(hr))
{
cout<<"erreur query IMediaEvent";
pGraph->Release();
pControl->Release();
CoUninitialize();
return 0;
}
file_load();
kill_dshow();
CoUninitialize();
system("Pause");
return 1;
}
void lister(LPCTSTR fichier)
{
WIN32_FIND_DATA wData;
HANDLE listing;
listing = FindFirstFile(fichier, &wData);
if(listing==INVALID_HANDLE_VALUE)
{
cout<<"\nAucun txt\n\n";
return;
}
lstrcpy(nom[0],wData.cFileName);
cout<< nom[0] << endl;
for(int i=1;i<=50;i++)
{
FindNextFile(listing, &wData);
if(GetLastError()==ERROR_NO_MORE_FILES)
{
lstrcpy(nom[i],"<Empty>");
}
else
{
lstrcpy(nom[i],wData.cFileName);
}
cout<< nom[i] << endl;
}
FindClose(listing);
}
void file_load()
{
FILE *playlist;
LPTSTR szPlaylist;
LPTSTR szResult;
szPlaylist=(LPTSTR)malloc(MAX_PATH);
//szResult=(LPTSTR)malloc(MAX_PATH);
TCHAR path[MAX_PATH]="C:\\";
_tcscat(path,nom[0]);
playlist=_tfopen(path,"rt");
_fgetts(szPlaylist,_MAX_PATH,playlist);
_fgetts(szPlaylist,_MAX_PATH,playlist);
_fgetts(szPlaylist,_MAX_PATH,playlist);
szResult=TEXT(szPlaylist);//meme sans faire ca, ca marche pas!
cout<<szPlaylist; //j'affiche voir si c'est ok!
file_render(szResult);
fclose(playlist);
}
void kill_dshow()
{
SAFE_RELEASE(pControl);
SAFE_RELEASE(pEvent);
SAFE_RELEASE(pGraph);
}
BOOL file_render(LPTSTR szMusicFile)
{
WCHAR wFile[MAX_PATH];
MultiByteToWideChar(CP_ACP,0,szMusicFile,-1,wFile,MAX_PATH);
hr=pGraph->RenderFile((LPCWSTR)wFile,NULL);
if(FAILED(hr))
{
cout<<"\n"<<"erreur de renderfile"<<"\n";
return FALSE;
}
return TRUE;
}
si quelqu'un peux m'aider ca serait tres tres apprecier parce que la je sait plus quoi faire!
Merci d'avance!
Destroyers27