ileaddownloaderdll.cpp

来自「个人封装的一个VC++支持多任务、多线程断点续传的DLL组件」· C++ 代码 · 共 91 行

CPP
91
字号

// ileadsoft gd 2008-7-22
// 多任务多线程断点下载DLL

#include "stdafx.h"
#include "iLeadDownloaderDll.h"

#include "DownloadCntl.h"

CDownloadCntl *g_pDownloadCntl = NULL;

extern "C" int iLeadDownloaderInit(HWND hWnd_RecvLogMsg);
extern "C" void iLeadDownloaderEnd();

extern "C" int iLeadDownloaderGetTaskNum();
extern "C" int iLeadDownloaderAddTask( char *pszUrl, char *pszSavePath, char *pszSaveFileName, int nThreadNum );
extern "C" int iLeadDownloaderSelTask( int nPos );

extern "C" int iLeadDownloaderRemoveTask();

extern "C" int iLeadDownloaderQueryState( int nPos, 
									      int &nFileTotaleSize, 
					   				      int &nTotalDownloadedSize,
									      int &nTotalDownloadedSize_ThisTimes,
									      int &nDownloadElapsedTime ); 

ILEADDOWNLOADDLL_API int iLeadDownloaderInit(HWND hWnd_RecvLogMsg)
{
	if( g_pDownloadCntl )
		return -1;

	g_pDownloadCntl = new CDownloadCntl;

	Set_RecvLogMsgHwnd ( hWnd_RecvLogMsg );
	Log ( L_VERBOSE, "\r\n%s", NOTE_DownloadMTR );

	return 1;
}

ILEADDOWNLOADDLL_API void iLeadDownloaderEnd()
{
	if( g_pDownloadCntl )
	{
		delete g_pDownloadCntl;
		g_pDownloadCntl = NULL;
	}
}

ILEADDOWNLOADDLL_API int iLeadDownloaderGetTaskNum()
{
	if( NULL == g_pDownloadCntl )
		return -1;

	return g_pDownloadCntl->GetTaskNum();
}

ILEADDOWNLOADDLL_API int iLeadDownloaderAddTask( char *pszUrl, char *pszSavePath, char *pszSaveFileName, int nThreadNum )
{
	if( NULL == g_pDownloadCntl )
		return -1;

	return g_pDownloadCntl->AddTask( pszUrl, pszSavePath, pszSaveFileName, nThreadNum );
}

ILEADDOWNLOADDLL_API int iLeadDownloaderSelTask( int nPos )
{
	if( NULL == g_pDownloadCntl )
		return -1;

	return g_pDownloadCntl->SelTask( nPos );
}

ILEADDOWNLOADDLL_API int iLeadDownloaderRemoveTask()
{
	if( NULL == g_pDownloadCntl )
		return -1;

	return g_pDownloadCntl->RemoveTask();
}

ILEADDOWNLOADDLL_API int iLeadDownloaderQueryState( int nPos, 
												    int &nFileTotaleSize, 
												    int &nTotalDownloadedSize,
												    int &nTotalDownloadedSize_ThisTimes,
												    int &nDownloadElapsedTime )
{
	if( NULL == g_pDownloadCntl )
		return -1;

	return g_pDownloadCntl->QueryState( nPos, nFileTotaleSize, nTotalDownloadedSize, nTotalDownloadedSize_ThisTimes, nDownloadElapsedTime );
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?