예제 #1
0
void vmsFlvSniffDllLoader::MakeSureDllLoaded()
{
	if (m_hDll)
		return;
	if (GetModuleHandle ("flvsniff.dll"))
		return;
	if (!isDllEnabled ())
		return;
	
	if (!m_hDll)
	{
		TCHAR tsz [MAX_PATH] = _T ("");
		GetModuleFileName (_Module.GetModuleInstance (), tsz, MAX_PATH);
		LPTSTR ptsz = _tcsrchr (tsz, '\\');
		if (ptsz)
		{
			_tcscpy (ptsz + 1, _T ("flvsniff.dll"));
			m_hDll = LoadLibrary (tsz);
		}
	}
	if (m_hDll)
	{
		if (!m_hevDestroyObj)
			m_hevDestroyObj = CreateEvent (NULL, TRUE, FALSE, NULL);
		DWORD dw;
		m_htMonitorSettings = CreateThread (NULL, 0, _threadMonitorSettings, this, 0, &dw);
	}
}
void vmsFlvSniffDllLoader::MakeSureDllLoaded()
{
	if (m_hDll)
		return;
	if (GetModuleHandle ("flvsniff.dll"))
		return;
	if (!isDllEnabled ())
		return;
	if (!m_hDll)
	{
		TCHAR tsz [MAX_PATH] = _T ("");
		extern HMODULE _hModule;
		assert (_hModule != NULL);
		GetModuleFileName (_hModule, tsz, MAX_PATH);
		LPTSTR ptsz = _tcsrchr (tsz, '\\');
		if (ptsz)
		{
			_tcscpy (ptsz + 1, _T ("..\\..\\..\\flvsniff.dll"));
			m_hDll = LoadLibrary (tsz);
		}
	}
	if (!m_hDll)
	{
		CRegKey key; 
		if (ERROR_SUCCESS != key.Open (HKEY_CURRENT_USER, 
				_T ("Software\\FreeDownloadManager.ORG\\Free Download Manager"), KEY_READ))
			return;
		TCHAR tszPath [MAX_PATH] = _T ("");
		DWORD dw = MAX_PATH;
		key.QueryValue (tszPath, _T ("Path"), &dw);
		_tcscat (tszPath, _T ("\\flvsniff.dll"));
		m_hDll = LoadLibrary (tszPath);
	}
	if (m_hDll)
	{
		if (!m_hevDestroyObj)
			m_hevDestroyObj = CreateEvent (NULL, TRUE, FALSE, NULL);
		DWORD dw;
		m_htMonitorSettings = CreateThread (NULL, 0, _threadMonitorSettings, this, 0, &dw);
	}
}