Определение приложения, которое будет вызываться в случае наступления тех или иных событий
BOOL CBitsJob::SetNotifyProgramm( LPCWSTR wszCommandLine )
{
	BOOL bRet = FALSE;
	if( m_lpJob != NULL )
	{
		if( SUCCEEDED( m_lpJob->SetNotifyInterface( NULL ) ) )
		{
			WCHAR wszJobId[48];
			if( StringFromGUID2( m_JobID,wszJobId,sizeof(wszJobId) ) )
			{
				IBackgroundCopyJob2* lpJob2 = NULL;
				m_lpJob->QueryInterface( __uuidof(IBackgroundCopyJob2),(void**)&lpJob2 );
				if( lpJob2 != NULL )
				{
					LPWSTR wszParameters = new WCHAR[MAX_PARAMETER_LEN+1];
					if( wszParameters != NULL )
					{
						wsprintfW( wszParameters,L»%s %s»,wszCommandLine,wszJobId );
						if( SUCCEEDED( lpJob2->SetNotifyCmdLine( wszCommandLine,wszParameters ) ) ) 
						{
							m_lpJob->SetNotifyFlags( BG_NOTIFY_JOB_TRANSFERRED | BG_NOTIFY_JOB_ERROR );						}
						delete [] wszParameters;
					}
					lpJob2->Release();
					lpJob2 = NULL;
				}
			}
		}
	}
	return bRet;
}

Поделитесь материалом с коллегами и друзьями