UINT WINAPI WorkThread(LPVOID Param)
//
need a point
{ THREADDATA * data=(THREADDATA * )Param;
CString Url=L
"http://haoting.com/musicjs/"
;
int len=data->ID.GetLength();
//ID
就是歌曲ID了
Url+=data->ID;
Url+=L
".js"
;
//OutputDebugString
(Url.GetBuffer(0));
if
(data->ID.IsEmpty())
return
0;
HINTERNET Internet=::InternetOpen(L
"DownloadMulic"
,INTERNET_OPEN_TYPE_DIRECT
,NULL,NULL,0);
if
(Internet==0)
{OutputDebugStringA(
"open Internet failed\n"
);
return
0;
}
HINTERNET hUrl=::InternetOpenUrl(Internet,Url,NULL,0,INTERNET_FLAG_RELOAD,0);
if
(hUrl==NULL)
{ OutputDebugString(L
"打开URL失败!"
);
InternetCloseHandle(Internet);
return
0;
}
PVOID buffer=malloc(1024);
memset(buffer,0,1024);
DWORD ret=0;
if
(!::InternetReadFile(hUrl,buffer,1024,&ret))
{
InternetCloseHandle(hUrl);
InternetCloseHandle(Internet);
return
0;
}
CString ALL,Temp=L
"http://wma.haoting.com"
;
WCHAR * widechar=new WCHAR[1024];
MultiByteToWideChar(CP_ACP,0,(char*)buffer,strlen((char*)buffer),widechar,1024);
ALL=widechar;
//AfxMessageBox
(ALL);
int Pos=0;
Temp+=ALL.Right(ALL.GetLength()-ALL.Find(L
"url_"
)-6-len);
ALL=Temp;
Temp=Temp.Left(Temp.Find(L
"\";"
));
data->Dlg->m_List.SetItemText(data->Index,4,Temp);
//
地址
Temp.Empty();
//OutputDebugString
(ALL.GetBuffer(0));
Temp=ALL.Right(ALL.GetLength()-ALL.Find(L
"music"
)-8-len);
ALL.Empty();
ALL=Temp;
Temp=Temp.Left(Temp.Find(L
"\";"
));
data->Dlg->m_List.SetItemText(data->Index,1,Temp);
//
歌名
Temp.Empty();
Temp=ALL.Right(ALL.GetLength()-ALL.Find(L
"singer"
)-9-len);
ALL.Empty();
ALL=Temp;
Temp=Temp.Left(Temp.Find(L
"\";"
));
data->Dlg->m_List.SetItemText(data->Index,2,Temp);
//
歌手
Temp.Empty();
Temp=ALL.Right(ALL.GetLength()-ALL.Find(L
"specialName"
)-14-len);
ALL.Empty();
ALL=Temp;
Temp=Temp.Left(Temp.Find(L
"\";"
));
data->Dlg->m_List.SetItemText(data->Index,3,Temp);
//
专辑
Temp.Empty();
CString FileName;
FileName=data->Dlg ->m_FolderPath;
FileName+=L
"\\"
;
Temp=data->Dlg->m_List.GetItemText(data->Index,1);
FileName+=Temp;
Temp.Empty();
Temp=data->Dlg->m_List.GetItemText(data->Index,4);
Temp=Temp.Right(4);
FileName+=Temp;
data->Dlg->DownLoadToFileW(0,NULL,0,data->Dlg->m_List.GetItemText(data->Index,4).GetBuffer(),FileName.GetBuffer(0));
//
直接下载一起搞定,多线程socket下载,速度和迅雷一样快
delete widechar;
int pos=data->Dlg->m_Progress.GetPos()+1;
data->Dlg ->m_Progress.SetPos(pos);
free
(buffer);
return
1;