Example #1
1
bool OfflineDataStore::GetRegKeyForDocNum(const CStdString& sDocID, CRegKey& rkResult) 
{
	CStdString sNoVersionDocID = RemoveVersionLabel(sDocID);
	sNoVersionDocID.MakeLower();

	CRegKey rk;
	long lResult = rk.Open(HKEY_CURRENT_USER, GetRegistryKeyName());

	DWORD dwIndex = 0;
	while(lResult == ERROR_SUCCESS)
	{
		CStdString sResult;
		DWORD dwLength = MAX_PATH;
		lResult = rk.EnumKey(dwIndex, sResult.GetBuffer(MAX_PATH), &dwLength);
		sResult.ReleaseBuffer();
		sResult.MakeLower();

		dwIndex++;
		if(sResult.Find(sNoVersionDocID) != -1)
		{
			return (rkResult.Open(HKEY_CURRENT_USER, GetKeyNameForDocID(sResult)) == ERROR_SUCCESS);
		}
	}
	return false;
}
Example #2
0
BOOL CKSogoClean::GetUserInfo(std::vector<std::wstring>& vec_userInfo)
{
	CRegKey reg;
	BOOL bRet = FALSE;
	HKEY hKey = HKEY_CURRENT_USER;
	std::wstring strSubKey;
	LONG lRet = -1;
	int nIndex = 0;
	WCHAR szInfo[MAX_PATH] = {0};
	DWORD dwSize = MAX_PATH;
	strSubKey = L"Software\\SogouExplorer\\Users";
	lRet = reg.Open(hKey, strSubKey.c_str(), KEY_READ);
	if (lRet != ERROR_SUCCESS)
	{
		bRet = FALSE;
		goto clean0;
	}
	while(ERROR_SUCCESS == reg.EnumKey(nIndex, szInfo, &dwSize))
	{
		vec_userInfo.push_back(szInfo);
		nIndex++;
		ZeroMemory(szInfo, MAX_PATH);
		dwSize = MAX_PATH;
	}
	if (nIndex > 0)
	{
		bRet = TRUE;
	}
clean0:
	reg.Close();
	return bRet;
}
bool OfflineDocIDResolver::SearchOfflineLibrary(const CStdString& sLibraryToSearch, const CStdString& sDocNum, CStdString& sOfflineDocKey ) const
{
    CRegKey key;

    if( key.Open(HKEY_CURRENT_USER, sLibraryToSearch) != ERROR_SUCCESS )
    {
        CStdString sErr = _T("Failed to Open Key : HKCU\\") + sLibraryToSearch;
        LOG_WS_ERROR(sErr.c_str());
        return false;
    }

    DWORD dwIndex = 0;

    long lResult = ERROR_SUCCESS;
    while((lResult == ERROR_SUCCESS || lResult == ERROR_MORE_DATA))
    {
        DWORD dwLength =MAX_PATH;

        lResult = key.EnumKey(dwIndex , sOfflineDocKey.GetBuffer(MAX_PATH), &dwLength , NULL);
        sOfflineDocKey.ReleaseBuffer();
        if(lResult == ERROR_NO_MORE_ITEMS)
            return false;

        DWORD dw = GetDWORDValue(sLibraryToSearch + _T("\\") + sOfflineDocKey, _T("DocNumber"));
        CStdString str;
        str.Format( _T("%d"), dw );
        if( str == sDocNum )
            return true;

        dwIndex++;
    }

    return false;
}
Example #4
0
//----------------------------------------------------------------------------
//  InitAddons
HRESULT CAnchoRuntime::InitAddons()
{
  // create all addons
  // open the registry key where all extensions are registered,
  // iterate subkeys and load each extension

  CRegKey regKey;
  LONG res = regKey.Open(HKEY_CURRENT_USER, s_AnchoExtensionsRegistryKey, KEY_READ);
  if (ERROR_SUCCESS != res)
  {
    return HRESULT_FROM_WIN32(res);
  }
  DWORD iIndex = 0;
  CString sKeyName;
  DWORD dwLen = 4096;
  HRESULT hr = S_OK;

  while(ERROR_SUCCESS == regKey.EnumKey(iIndex++, sKeyName.GetBuffer(dwLen), &dwLen, NULL))
  {
    sKeyName.ReleaseBuffer();
    CAnchoAddonComObject * pNewObject = NULL;
    hr = CAnchoAddonComObject::CreateInstance(&pNewObject);
    if (SUCCEEDED(hr))
    {
      CComPtr<IAnchoAddon> addon(pNewObject);
      hr = addon->Init(sKeyName, m_pAnchoService, m_pWebBrowser);
      if (SUCCEEDED(hr))
      {
        m_Addons[std::wstring(sKeyName)] = addon;
      }
    }
    dwLen = 4096;
  }
  return S_OK;
}
Example #5
0
// Purpose: Add to the list of elements by searching the registry
void NsLibraryList::AddListRegistry()
{
    CRegKey icKey;
    if (ERROR_SUCCESS == icKey.Open(HKEY_LOCAL_MACHINE, _T(szLIBRARY_REGISTRY_BASE), KEY_READ))
    {
        const UINT BUFF_LEN = 256;
	    TCHAR szBuffer[BUFF_LEN];

	    for (DWORD dwIndex = 0; ; ++dwIndex)
	    {
	        DWORD dwSize = ARRAY_SIZE(szBuffer);
            if (icKey.EnumKey(dwIndex, szBuffer, &dwSize) == ERROR_NO_MORE_ITEMS)
                break;  // normal exit of loop

            CRegKey icNewKey;
            if (ERROR_SUCCESS == icNewKey.Open(icKey, szBuffer, KEY_READ))
            {
                TCHAR szPathBuffer[BUFF_LEN];
                ULONG nBytes = ARRAY_SIZE(szPathBuffer);

                if (ERROR_SUCCESS == icNewKey.QueryStringValue("Path", szPathBuffer, &nBytes))
                {
                    CString strDLLName(szPathBuffer);
                    AddDllToList(strDLLName);
                }
            }
	    }
    }
}
Example #6
0
bool CRealMediaPlayer::Init()
{
    CString prefs(_T("Software\\RealNetworks\\Preferences"));

    CRegKey key;

    if (ERROR_SUCCESS != key.Open(HKEY_CLASSES_ROOT, prefs + _T("\\DT_Common"), KEY_READ)) {
        return false;
    }

    TCHAR buff[MAX_PATH];
    ULONG len = _countof(buff);
    if (ERROR_SUCCESS != key.QueryStringValue(NULL, buff, &len)) {
        return false;
    }

    key.Close();

    m_hRealMediaCore = LoadLibrary(CString(buff) + _T("pnen3260.dll"));
    if (!m_hRealMediaCore) {
        return false;
    }

    m_fpCreateEngine = (FPRMCREATEENGINE)GetProcAddress(m_hRealMediaCore, "CreateEngine");
    m_fpCloseEngine = (FPRMCLOSEENGINE)GetProcAddress(m_hRealMediaCore, "CloseEngine");
    m_fpSetDLLAccessPath = (FPRMSETDLLACCESSPATH)GetProcAddress(m_hRealMediaCore, "SetDLLAccessPath");

    if (!m_fpCreateEngine || !m_fpCloseEngine || !m_fpSetDLLAccessPath) {
        return false;
    }

    if (ERROR_SUCCESS == key.Open(HKEY_CLASSES_ROOT, prefs, KEY_READ)) {
        CString dllpaths;

        len = _countof(buff);
        for (int i = 0; ERROR_SUCCESS == key.EnumKey(i, buff, &len); i++, len = _countof(buff)) {
            CRegKey key2;
            TCHAR buff2[MAX_PATH];
            ULONG len2 = _countof(buff2);
            if (ERROR_SUCCESS != key2.Open(HKEY_CLASSES_ROOT, prefs + _T("\\") + buff, KEY_READ)
                    || ERROR_SUCCESS != key2.QueryStringValue(NULL, buff2, &len2)) {
                continue;
            }

            dllpaths += CString(buff) + '=' + buff2 + '|';
        }

        key.Close();

        if (!dllpaths.IsEmpty()) {
            char* s = DEBUG_NEW char[dllpaths.GetLength() + 1];
            strcpy_s(s, dllpaths.GetLength() + 1, CStringA(dllpaths));
            for (size_t i = 0, j = strlen(s); i < j; i++) {
                if (s[i] == '|') {
                    s[i] = '\0';
                }
            }
            m_fpSetDLLAccessPath(s);
            delete [] s;
        }
bool OfflineDocIDResolver::GetOfflineDocumentInfo(const CStdString& sOnlineLibraryToSearch, const CStdString& sDocNum, CStdString& sOfflineDocNum, CStdString& sOfflineLibrary) const
{
    CRegKey key;
    if(key.Open(HKEY_CURRENT_USER, sOnlineLibraryToSearch) != ERROR_SUCCESS)
    {
        CStdString sErr = _T("Failed to Open Key : HKCU\\") + sOnlineLibraryToSearch;
        LOG_WS_ERROR(sErr.c_str());
        return false;
    }

    DWORD dwIndex = 0;
    DWORD dwLength =MAX_PATH;

    long lResult = ERROR_SUCCESS;
    while((lResult == ERROR_SUCCESS || lResult == ERROR_MORE_DATA))
    {
        DWORD dwLength =MAX_PATH;
        lResult = key.EnumKey(dwIndex , sOfflineLibrary.GetBuffer(MAX_PATH), &dwLength , NULL);
        sOfflineLibrary.ReleaseBuffer();
        if(lResult == ERROR_NO_MORE_ITEMS)
            return false;

        if(SearchOfflineLibrary(sOnlineLibraryToSearch + _T("\\") + sOfflineLibrary, sDocNum, sOfflineDocNum))
            return true;

        dwIndex++;
    }

    return false;
}
Example #8
0
BOOL COther::GetQQInstallDir( CString& InstallDir  )
{
    BOOL bRet = FALSE;

    HKEY hKey = HKEY_LOCAL_MACHINE;
    CString SubKeyPath = L"SOFTWARE\\Tencent";

    LONG Result = ERROR_SUCCESS;
    CRegKey   QQMainKey;
    Result = QQMainKey.Open( hKey, SubKeyPath, KEY_READ );
    if ( ERROR_SUCCESS != Result )
    {
        return bRet;
    }

    DWORD Index = 0;
    DWORD BufTCharNum = 0;
    while ( true )
    {
        //得子键值名
        CString EnumSubKeyName;
        BufTCharNum = MAX_PATH+1;
        Result = QQMainKey.EnumKey( Index, EnumSubKeyName.GetBuffer(BufTCharNum), &BufTCharNum );
        EnumSubKeyName.ReleaseBuffer( (ERROR_SUCCESS!=Result)?(0):(-1) );
        if ( ERROR_SUCCESS != Result )
        {
            break;
        }
        ++Index;

        //打开子键
        CString EnumSubKeyPath;
        EnumSubKeyPath.Format( L"%s\\%s", SubKeyPath, EnumSubKeyName );

        CRegKey SubKey;
        Result = SubKey.Open( hKey, EnumSubKeyPath, KEY_READ );
        if ( ERROR_SUCCESS != Result )
        {
            continue;
        }

        //得安装路径
        CString InstallPath;
        BufTCharNum = MAX_PATH+1;
        Result = SubKey.QueryStringValue( L"install", InstallPath.GetBuffer(BufTCharNum), &BufTCharNum );
        InstallPath.ReleaseBuffer( (ERROR_SUCCESS!=Result)?(0):(-1) );
        if ( (ERROR_SUCCESS == Result)
            && (FALSE == InstallPath.IsEmpty()) )
        {
            InstallDir = InstallPath;
            bRet = TRUE;
            break;
        }
    }

    return bRet;
}
Example #9
0
unsigned int OfflineDataStore::CountOfflineDocs()
{
	int  iOffLineDocs = 0;
	DWORD dwError = ERROR_SUCCESS;
	DWORD dwBufferSize = 0;
	TCHAR	szKeyName[MAX_PATH];

	CRegKey rk;
	if (rk.Open(HKEY_CURRENT_USER, GetRegistryKeyName(), KEY_READ | KEY_ENUMERATE_SUB_KEYS)!=ERROR_SUCCESS)
		return 0;

	for (iOffLineDocs = 0; (dwError == ERROR_SUCCESS || dwError == ERROR_MORE_DATA); iOffLineDocs++) 
    { 
		 dwBufferSize = 0;
		 dwError = rk.EnumKey(iOffLineDocs, szKeyName, &dwBufferSize , NULL);
    } 

	return iOffLineDocs-1;
}
Example #10
0
BOOL _CheckFireFoxExist()
{
	BOOL bRet = FALSE;
	KCheckApp theInfo;
	CRegKey reg;
	LONG lRet = -1;
	DWORD nIndex = 0;
	DWORD dwSize = MAX_PATH;
	WCHAR szSubName[MAX_PATH] = {0};
	std::wstring strSubKey;
	strSubKey = L"SOFTWARE\\Mozilla";
	lRet = reg.Open(HKEY_LOCAL_MACHINE, strSubKey.c_str(), KEY_READ);
	if (lRet != ERROR_SUCCESS)
	{
		bRet = FALSE; 
		goto clean1;
	}
	while (ERROR_SUCCESS == reg.EnumKey(nIndex, szSubName, &dwSize)) 
	{
		theInfo.hKey = HKEY_LOCAL_MACHINE;
		theInfo.strSubKey = L"SOFTWARE\\Mozilla\\";
		theInfo.strSubKey += szSubName;
		theInfo.strSubKey += L"\\bin";
		theInfo.strKeyName = L"PathToExe";
		theInfo.strFileName = L"firefox.exe";
		theInfo.bIsFile = TRUE;
		bRet = GetAppPathByReg(theInfo);
		nIndex++;
		if (bRet)
		{
			goto clean0;
		}
	}
clean1:
	if (!bRet)
	{
		bRet = QueryUninstallData(L"Mozilla Firefox", L"firefox.exe");
	}
clean0:
	reg.Close();
	return bRet;
}
Example #11
0
//加载服务器
void CDlgLogon::LoadLogonServer()
{
	//读取最近登录服务器
	CComboBox * pComBoxServer=(CComboBox *)GetDlgItem(IDC_SERVER);
	m_strLogonServer=AfxGetApp()->GetProfileString(REG_OPTION_LOGON,TEXT("LogonServer"),NULL);
	if (m_strLogonServer.IsEmpty()==FALSE)
	{
		pComBoxServer->AddString(m_strLogonServer);
		pComBoxServer->SetWindowText(m_strLogonServer);
	}

	//读取服务器列表
	CRegKey RegLogonServer;
	RegLogonServer.Open(HKEY_CURRENT_USER,REG_LOGON_SERVER,KEY_READ);
	if (RegLogonServer!=NULL)
	{
		TCHAR szLogonServer[128]=TEXT("");
		DWORD dwIndex=0,dwBufferSize=sizeof(szLogonServer);
		do
		{
			dwBufferSize=sizeof(szLogonServer);
			if (RegLogonServer.EnumKey(dwIndex++,szLogonServer,&dwBufferSize,NULL)!=ERROR_SUCCESS) break;
			if (szLogonServer[0]!=0)
			{
				if (m_strLogonServer.IsEmpty()) m_strLogonServer=szLogonServer;
				if (ComboBoxFindString(pComBoxServer,szLogonServer)==LB_ERR) pComBoxServer->AddString(szLogonServer);
			}
		} while (true);
	}

	//设置选择
	if ((pComBoxServer->GetWindowTextLength()==0)&&(pComBoxServer->GetCount()>0)) pComBoxServer->SetCurSel(0);
	if (pComBoxServer->GetCount()==0)
	{
		pComBoxServer->AddString(TEXT("www.dc173.com"));
		pComBoxServer->SetCurSel(0);
	}

	return;
}
Example #12
0
void CIEMonitor::ApplyChanges( void )
{
	BOOL bNeedReg = FALSE;
	if(m_bFirstRun)
	{
		bNeedReg = CheckForUpdate(thePrefs.GetMuleDirectory(EMULE_MODULEDIR) + _T("IE2EM.dll"));
	}
	if(bNeedReg || !IsRegistered())
		RegisterAll();
	if(m_bFirstRun || m_bIEMenu != thePrefs.GetAddToIEMenu() || m_bMonitor != thePrefs.GetMonitorLinks() || m_bEd2k != thePrefs.GetMonitorEd2k() || m_wLangID != thePrefs.GetLanguageID())
	{
		m_bIEMenu = thePrefs.GetAddToIEMenu();
		m_bMonitor = thePrefs.GetMonitorLinks();
		m_bEd2k = thePrefs.GetMonitorEd2k();
		m_wLangID = thePrefs.GetLanguageID();
		CRegKey regkey;
		CRegKey subkey;
		if( regkey.Create(HKEY_CURRENT_USER, _T("Software\\easyMule")) == ERROR_SUCCESS)
		{
			TCHAR szPath[512];
			DWORD count = 512;
			if(regkey.QueryStringValue(_T("InstallPath"), szPath, &count) != ERROR_SUCCESS)
			{
				_tcscpy(szPath, thePrefs.GetMuleDirectory(EMULE_EXECUTEABLEDIR));
				INT len = _tcslen(szPath);
				if(len > 3 && szPath[len - 1] == '\\')
					szPath[len - 1] = 0;
				regkey.SetStringValue(_T("InstallPath"), szPath);
			}
			regkey.Close();
		}

		CString strPath = thePrefs.GetMuleDirectory(EMULE_EXECUTEABLEDIR) + _T("IE2EM.htm");
		if( regkey.Create(HKEY_CURRENT_USER, _T("Software\\Microsoft\\Internet Explorer\\MenuExt")) == ERROR_SUCCESS)
		{
			TCHAR szName[1024];
			DWORD dwLen = 1024;
			BOOL bFound = FALSE;
			for(INT i = 0; regkey.EnumKey(i, szName, &dwLen) != ERROR_NO_MORE_ITEMS; i ++)
			{
				subkey.Open(regkey, szName);
				TCHAR szValue[1024];
				ULONG uLen = 1024;
				subkey.QueryStringValue(NULL, szValue, &uLen);
				if(strPath == szValue)
				{
					bFound = TRUE;
					break;
				}
				subkey.Close();
				dwLen = 1024;
			}
			if(bFound)
			{
				subkey.Close();
				regkey.RecurseDeleteKey(szName);
			}
			if(m_bIEMenu)
			{
				subkey.Create(regkey, GetResString(IDS_IEMENUEXT));
				subkey.SetStringValue(NULL, strPath);
				subkey.SetDWORDValue(_T("Contexts"), 0x22);
				subkey.Close();
			}
			regkey.Close();
		}
		if( regkey.Create(HKEY_CURRENT_USER, _T("Software\\easyMule")) == ERROR_SUCCESS)
		{	
			if(m_bMonitor)
				regkey.SetDWORDValue(_T("Monitor"), 1);
			else
				regkey.SetDWORDValue(_T("Monitor"), 0);
			regkey.Close();
		}
	}
	m_bFirstRun = false;
}
Example #13
0
//读取帐号
void CDlgLogon::LoadAccountsInfo()
{
	//变量定义
	CComboBox * pComBoxAccounts=(CComboBox *)GetDlgItem(IDC_ACCOUNTS);
	CComboBox * pComBoxUserID=(CComboBox *)GetDlgItem(IDC_USER_ID);

	//读取信息
	CRegKey RegUserInfo;
	RegUserInfo.Open(HKEY_CURRENT_USER,REG_USER_INFO,KEY_READ);
	if (RegUserInfo!=NULL)
	{
		int iInsertItem=CB_ERR;
		LONG lErrorCode=ERROR_SUCCESS;
		DWORD dwType=REG_SZ,dwIndex=0,dwUserDBID=0;
		TCHAR szUserIDBuffer[32]=TEXT(""),szTempBuffer[256]=TEXT("");
		do
		{
			//设置变量
			dwUserDBID=0;
			szTempBuffer[0]=0;
			szUserIDBuffer[0]=0;

			//读取游戏 ID
			DWORD dwBufferSize=sizeof(szUserIDBuffer);
			if (RegUserInfo.EnumKey(dwIndex++,szUserIDBuffer,&dwBufferSize,NULL)!=ERROR_SUCCESS) break;
			dwUserDBID=atol(szUserIDBuffer);
			if (dwUserDBID==0) continue;

			//加载其他信息
			CRegKey RegUserAccount;
			_snprintf(szTempBuffer,sizeof(szTempBuffer),TEXT("%s\\%ld"),REG_USER_INFO,dwUserDBID);
			RegUserAccount.Open(HKEY_CURRENT_USER,szTempBuffer,KEY_READ);
			if (RegUserAccount!=NULL)
			{
				//游戏帐号
				dwBufferSize=sizeof(szTempBuffer);
				lErrorCode=RegUserAccount.QueryValue(TEXT("UserAccount"),&dwType,szTempBuffer,&dwBufferSize);
				if ((lErrorCode==ERROR_SUCCESS)&&(szTempBuffer[0]!=0)&&(ComboBoxFindString(pComBoxAccounts,szTempBuffer)==LB_ERR))
				{
					iInsertItem=pComBoxAccounts->AddString(szTempBuffer);
					pComBoxAccounts->SetItemData(iInsertItem,dwUserDBID);
				}

				//游戏 ID
				DWORD dwGameID=0L;
				dwBufferSize=sizeof(dwGameID);
				if ((RegUserAccount.QueryValue(TEXT("GameID"),&dwType,&dwGameID,&dwBufferSize)==ERROR_SUCCESS)&&(dwGameID!=0L))
				{
					_sntprintf(szTempBuffer,CountArray(szTempBuffer),TEXT("%ld"),dwGameID);
					iInsertItem=pComBoxUserID->AddString(szTempBuffer);
					pComBoxUserID->SetItemData(iInsertItem,dwUserDBID);
				}
			}
		} while (true);
	}

	//最近用户
	DWORD dwLastUserID=AfxGetApp()->GetProfileInt(REG_OPTION_LOGON,TEXT("LastUserID"),0L);
	if (dwLastUserID!=0L)
	{
		for (int i=0;i<pComBoxUserID->GetCount();i++)
		{
			DWORD dwComboBoxID=(DWORD)pComBoxUserID->GetItemData(i);
			if ((dwComboBoxID!=0L)&&(dwComboBoxID==dwLastUserID))
			{
				pComBoxUserID->SetCurSel(i);
				UpdateUserComboBox(IDC_USER_ID);
				break;
			}
		}
	}

	//设置选择
	if ((pComBoxUserID->GetCurSel()==LB_ERR)&&(pComBoxUserID->GetCount()>0))
	{
		pComBoxUserID->SetCurSel(0);
		UpdateUserComboBox(IDC_USER_ID);
	}

	//设置选择
	if ((pComBoxAccounts->GetCurSel()==LB_ERR)&&(pComBoxAccounts->GetCount()>0))
	{
		pComBoxAccounts->SetCurSel(0);
		UpdateUserComboBox(IDC_ACCOUNTS);
	}

	return;
}
Example #14
0
bool CRealMediaPlayer::Init()
{
	CString prefs(_T("Software\\RealNetworks\\Preferences"));

	CRegKey key;

	if(ERROR_SUCCESS != key.Open(HKEY_CLASSES_ROOT, prefs + _T("\\DT_Common"), KEY_READ))
		return(false);

	TCHAR buff[MAX_PATH];
	ULONG len = sizeof(buff);
	if(ERROR_SUCCESS != key.QueryStringValue(NULL, buff, &len))
		return(false);

	key.Close();

	if(!(m_hRealMediaCore = LoadLibrary(CString(buff) + _T("pnen3260.dll")))) 
		return(false);

	m_fpCreateEngine = (FPRMCREATEENGINE)GetProcAddress(m_hRealMediaCore, "CreateEngine");
	m_fpCloseEngine = (FPRMCLOSEENGINE)GetProcAddress(m_hRealMediaCore, "CloseEngine");
	m_fpSetDLLAccessPath = (FPRMSETDLLACCESSPATH)GetProcAddress(m_hRealMediaCore, "SetDLLAccessPath");
	
	if(!m_fpCreateEngine || !m_fpCloseEngine || !m_fpSetDLLAccessPath)
		return(false);

	if(ERROR_SUCCESS == key.Open(HKEY_CLASSES_ROOT, prefs, KEY_READ))
	{
		CString dllpaths;

		len = sizeof(buff);
		for(int i = 0; ERROR_SUCCESS == key.EnumKey(i, buff, &len); i++, len = sizeof(buff))
		{
			CRegKey key2;
			TCHAR buff2[MAX_PATH];
			ULONG len2 = sizeof(buff2);
			if(ERROR_SUCCESS != key2.Open(HKEY_CLASSES_ROOT, prefs + _T("\\") + buff, KEY_READ)
			|| ERROR_SUCCESS != key2.QueryStringValue(NULL, buff2, &len2))
				continue;

			dllpaths += CString(buff) + '=' + buff2 + '|';
		}

		key.Close();

		if(!dllpaths.IsEmpty())
		{
			char* s = new char[dllpaths.GetLength()+1];
			strcpy(s, CStringA(dllpaths));
			for(int i = 0, j = strlen(s); i < j; i++) {if(s[i] == '|') s[i] = '\0';}
			m_fpSetDLLAccessPath(s);
			delete [] s;
		}
	}

	if(PNR_OK != m_fpCreateEngine(&m_pEngine))
		return(false);

	if(PNR_OK != m_pEngine->CreatePlayer(*&m_pPlayer))
		return(false);

	if(!(m_pSiteManager = m_pPlayer) || !(m_pCommonClassFactory = m_pPlayer))
		return(false);

	m_pAudioPlayer = m_pPlayer;
	m_pAudioPlayer->AddPostMixHook(static_cast<IRMAAudioHook*>(this), FALSE, FALSE);
//	m_pVolume = m_pAudioPlayer->GetDeviceVolume();
	m_pVolume = m_pAudioPlayer->GetAudioVolume();

	// IRMAVolume::SetVolume has a huge latency when used via GetAudioVolume,
	// but by lowering this audio pushdown thing it can get better
	CComQIPtr<IRMAAudioPushdown, &IID_IRMAAudioPushdown> pAP = m_pAudioPlayer;
	if(pAP) pAP->SetAudioPushdown(300); // 100ms makes the playback sound choppy, 200ms looks ok, but for safety we set this to 300ms... :P

	CComQIPtr<IRMAErrorSinkControl, &IID_IRMAErrorSinkControl> pErrorSinkControl = m_pPlayer;
	if(pErrorSinkControl) pErrorSinkControl->AddErrorSink(static_cast<IRMAErrorSink*>(this), PNLOG_EMERG, PNLOG_INFO);

	if(PNR_OK != m_pPlayer->AddAdviseSink(static_cast<IRMAClientAdviseSink*>(this)))
		return(false);

	if(PNR_OK != m_pPlayer->SetClientContext((IUnknown*)(INonDelegatingUnknown*)(this)))
		return(false);

	// TODO
/*
	if(CComQIPtr<IRMAPreferences, &IID_IRMAPreferences> pPrefs = m_pPlayer)
	{
		CComPtr<IRMABuffer> pBuffer;
		HRESULT hr = pPrefs->ReadPref("HTTPProxyHost", *&pBuffer);

		UCHAR* pData = NULL;
		ULONG32 ulLength = 0;
		hr = pBuffer->Get(pData, ulLength);

		pBuffer = NULL;
		hr = m_pCommonClassFactory->CreateInstance(CLSID_IRMABuffer, (void**)&pBuffer);
		hr = pBuffer->SetSize(strlen("localhost")+1);
		pData = pBuffer->GetBuffer();
		strcpy((char*)pData, "localhost");
		hr = pBuffer->Set(pData, strlen("localhost")+1);

		pData = NULL;
		ulLength = 0;
		hr = pBuffer->Get(pData, ulLength);

		hr = pPrefs->WritePref("HTTPProxyHost", pBuffer);

		hr = hr;
	}
*/
	return(true);
}
Example #15
0
BOOL QueryUninstallData(const std::wstring pszDisplayName, 
						const std::wstring pszFileName)
{
	BOOL     bRet        = FALSE;
	DWORD    dwRet       = ERROR_SUCCESS;
	HKEY     hRootKey    = HKEY_LOCAL_MACHINE;
	HKEY     hKey        = NULL; 
	HKEY     hSubKey     = NULL;
	DWORD    dwSize      = MAX_PATH;
	FILETIME ftLastRec                = {0};
	std::wstring strRegKeyUninstall = TEXT( "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall" );
	std::wstring strTemp;
	WCHAR szValueName[MAX_PATH] = {0};  
	LONG lRet = -1;
	int nIndex = 0;

	CRegKey reg;
	lRet = reg.Open(hRootKey, strRegKeyUninstall.c_str(), KEY_READ);
	if (lRet != ERROR_SUCCESS)
	{
		bRet = FALSE;
		goto clean0;
	}
	while(ERROR_SUCCESS == reg.EnumKey(nIndex, szValueName, &dwSize))
	{
		CRegKey regEx;
		strTemp = strRegKeyUninstall;
		strTemp += L"\\";
		strTemp += szValueName;
		WCHAR szBuffer[MAX_PATH] = {0};
		DWORD dwRetSize = MAX_PATH;
		std::wstring strTempDis;
		KCkeckByUnistall appUnintall;
     
		if (ERROR_SUCCESS != regEx.Open(hRootKey, strTemp.c_str(), KEY_READ))
		{
			nIndex++;
			continue;;
		}
		if (ERROR_SUCCESS == regEx.QueryStringValue(L"DisplayName", szBuffer, &dwRetSize))
		{
			appUnintall.strDisplayName = szBuffer;
		}
		else
		{
			ZeroMemory(szBuffer, MAX_PATH);
			dwSize = MAX_PATH;
			nIndex++;
			continue;
		}
		ZeroMemory(szBuffer, MAX_PATH);
		dwRetSize = MAX_PATH;
		if (ERROR_SUCCESS == regEx.QueryStringValue(L"DisplayIcon", szBuffer, &dwRetSize))
		{
			appUnintall.strDisplayIcon = szBuffer;
		}
		ZeroMemory(szBuffer, MAX_PATH);
		dwRetSize = MAX_PATH;

		if (ERROR_SUCCESS == regEx.QueryStringValue(L"InstallLocation", szBuffer, &dwRetSize))
		{
			appUnintall.strInstallLocation = szBuffer;
		}
		ZeroMemory(szBuffer, MAX_PATH);
		dwRetSize = MAX_PATH;

		if (ERROR_SUCCESS == regEx.QueryStringValue(L"UninstallString", szBuffer, &dwRetSize))
		{
			appUnintall.strUninstallString = szBuffer;
		}

		regEx.Close();

		if (UninstallInfoCheck(appUnintall, pszDisplayName, pszFileName))
		{
			bRet = TRUE;
			goto clean0;
		}
		ZeroMemory(szBuffer, MAX_PATH);
		dwSize = MAX_PATH;
		nIndex++;
	}


clean0:
	reg.Close();
	return bRet;
}
Example #16
0
BOOL CUtils::IsInstalled2( REG_INFO & reg_info )
{
    for (size_t i = 0; i < reg_info.size(); ++i)
    {
        REG_GROUP & group = reg_info[i];

        if (group.hKey == NULL || group.szSubKey.IsEmpty()) 
            continue;

        CRegKey key;
        LONG lRes = key.Open(group.hKey, group.szSubKey, KEY_READ|(group.bIsX64?KEY_WOW64_64KEY:KEY_WOW64_32KEY));
        if (ERROR_SUCCESS != lRes)
        {
            continue;
        }

        // 如果value为空,则说明只需要验证键是否存在
        if (group.szValue.IsEmpty())
        {
            return TRUE;
        }

        TCHAR szKeyName[MAX_KEY_LENGTH] = {};
        DWORD dwKeyName = MAX_KEY_LENGTH;
        TCHAR szSubValue[MAX_VALUE_NAME] = {};
        ULONG nChars = MAX_VALUE_NAME;
        for (int iIndex = 0; lRes == ERROR_SUCCESS; ++iIndex)
        {
            szKeyName[0] = '\0';
            dwKeyName = MAX_KEY_LENGTH;
            lRes = key.EnumKey(iIndex, szKeyName, &dwKeyName, NULL);
            if (ERROR_SUCCESS == lRes && szKeyName[0] != '\0')
            {
                TCHAR szSubKey[MAX_KEY_LENGTH] = { 0 };
                ::PathCombine(szSubKey, group.szSubKey, szKeyName);

                CRegKey subKey;
                LONG lSubRes = subKey.Open(group.hKey, szSubKey, KEY_READ|(group.bIsX64?KEY_WOW64_64KEY:KEY_WOW64_32KEY));
                if (ERROR_SUCCESS == lSubRes)
                {
                    szSubValue[0] = '\0';
                    nChars = MAX_VALUE_NAME;
                    LONG lSubRes = subKey.QueryStringValue(group.szValue, szSubValue, &nChars);
                    if (ERROR_SUCCESS == lSubRes && szSubValue[0] != '\0')
                    {
                        try
                        {
                            boost::wregex reg(group.szExe, boost::regex::icase|boost::regex::no_except);
                            if (boost::regex_match(szSubValue, reg))
                            {
                                return TRUE;
                            }
                        }
                        catch (...)
                        {

                        }
                    }
                }
            }
        }
    }

    return FALSE;
}
Example #17
0
bool ToolCollection::RegisterURLProtocal(const CAtlStringW protocalname,const CAtlStringW cmdline)
{
	CAtlStringW temp,cmd,icon;
	::GetModuleFileNameW(nullptr,temp.GetBuffer(MAX_PATH),MAX_PATH);
	temp.ReleaseBuffer();
	cmd.Format(L"\"%s\" %s",temp,cmdline);
	icon.Format(L"\"%s\",1",temp);

	CRegKey regroot;
	bool rebuild=true;
	if(ERROR_SUCCESS==regroot.Open(HKEY_CLASSES_ROOT,protocalname))
	{
		CRegKey checkcmd;
		if(ERROR_SUCCESS==checkcmd.Open(regroot,L"shell\\open\\command"))
		{
			ULONG count=MAX_PATH+20;
			if(ERROR_SUCCESS==checkcmd.QueryStringValue(nullptr,temp.GetBuffer(count),&count))
			{
				temp.ReleaseBuffer();
				if(temp.CompareNoCase(cmd)==0)
				{
					rebuild=false;
				}
			}
			else
				temp.ReleaseBuffer();
		}
		if(rebuild==false)
		{
			DWORD index=0;
			ULONG count=260;
			rebuild=true;
			while(ERROR_SUCCESS==regroot.EnumKey(index,temp.GetBuffer(count),&count))
			{
				temp.ReleaseBuffer();
				index++;
				if(temp.CompareNoCase(L"URL Protocol")==0)
				{
					rebuild=false;
					break;
				}
			}
		}
	}
	if(rebuild)
	{
		temp.Format(L"URL:%s Protocol",protocalname);
		regroot.Close();
		if(regroot.Create(HKEY_CLASSES_ROOT,protocalname)==ERROR_SUCCESS)
		{
			regroot.SetStringValue(nullptr,temp);
			regroot.SetStringValue(L"URL Protocol",L"");
			CRegKey subkey;
			if(ERROR_SUCCESS==subkey.Create(regroot,L"DefaultIcon"))
			{
				subkey.SetStringValue(nullptr,icon);
				subkey.Close();
			}
			if(ERROR_SUCCESS==subkey.Create(regroot,L"shell\\open\\command"))
			{
				subkey.SetStringValue(nullptr,cmd);
				subkey.Close();
			}
		}
	}
	return true;
}
void CFileTypesForm::OnBnClickedButtonReload()
{
    for (DWORD i=0; i<pageCount; i++)
    {
        if (pages[i])
        {
            pages[i]->info.Clear();
            pages[i]->UpdateTree();
        }
    }

    DSUtil::FilterTemplates filters;
    filters.EnumerateAllRegisteredFilters();

    // search for registered protocols
    if (page_protocols)
    {
        ATL::CRegKey rkRoot(HKEY_CLASSES_ROOT);
        // only real protocols => not something like "WMP11.AssocProtocol.MMS"
        // faster, because i don't need to search in every entry for "Source Filter"
        TCHAR szName[10] = {0};
        DWORD szNameLength = 10;
        DWORD i = 0;
        long ret = 0;
        while (ERROR_NO_MORE_ITEMS != (ret = rkRoot.EnumKey(i++, szName, &szNameLength)))
        {
            if (ret != ERROR_SUCCESS)
                continue;

            CRegKey rkKey;
            if(ERROR_SUCCESS == rkKey.Open(HKEY_CLASSES_ROOT, szName, KEY_READ))
            {
                TCHAR szSourceFilterGuid[40] = {0};
                DWORD szLength = 40;
                if (ERROR_SUCCESS == rkKey.QueryStringValue(_T("Source Filter"), szSourceFilterGuid, &szLength))
                {
                    GraphStudio::PropItem* group = new GraphStudio::PropItem(CString(szName));

                    CString strClsid = szSourceFilterGuid;
                    GUID clsid = {0};
                    CLSIDFromString((LPOLESTR)strClsid.GetBuffer(), &clsid);

                    group->AddItem(new GraphStudio::PropItem(_T("CLSID"), CString(szSourceFilterGuid), false));

                    DSUtil::FilterTemplate ft;
		            if (filters.FindTemplateByCLSID(clsid, &ft))
                    {
                        group->AddItem(new GraphStudio::PropItem(_T("Name"), CString(ft.name), false));
                        group->AddItem(new GraphStudio::PropItem(_T("File"), CString(ft.file), false));
                    }

                    // last Change of this key
                    FILETIME timeMod = {0};
                    if (ERROR_SUCCESS == RegQueryInfoKey(rkKey, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &timeMod))
                        group->AddItem(new GraphStudio::PropItem(_T("Modified"), CTime(timeMod)));

                    page_protocols->info.AddItem(group);
                }
            }
            rkKey.Close();
            szNameLength = 10;
        }
        page_protocols->UpdateTree();
        rkRoot.Close();
    }

    // search for registered extensions
    if (page_extensions)
    {
        ATL::CRegKey rkRoot;
        CString strRoot = _T("Media Type\\Extensions");
        if (ERROR_SUCCESS == rkRoot.Open(HKEY_CLASSES_ROOT, strRoot, KEY_READ))
        {
            // {7DF62B50-6843-11D2-9EEB-006008039E37}
            static const GUID CLSID_StillVideo = {0x7DF62B50, 0x6843, 0x11D2, { 0x9E, 0xEB, 0x00, 0x60, 0x08, 0x03, 0x9E, 0x37} };

            TCHAR szName[50] = {0};
            DWORD szNameLength = 50;
            DWORD i = 0;
            while (ERROR_NO_MORE_ITEMS != rkRoot.EnumKey(i++, szName, &szNameLength))
            {
                CString strKey = strRoot;
                strKey.Append(_T("\\"));
                strKey.Append(szName);
                CRegKey rkKey;
                if(ERROR_SUCCESS == rkKey.Open(HKEY_CLASSES_ROOT, strKey, KEY_READ))
                {
                    GraphStudio::PropItem* group = new GraphStudio::PropItem(CString(szName));

                    TCHAR szGuid[40] = {0};
                    DWORD szLength = 40;
                    if (ERROR_SUCCESS == rkKey.QueryStringValue(_T("Source Filter"), szGuid, &szLength))
                    {
                        CString strClsid = szGuid;
                        GUID clsid = {0};
                        CLSIDFromString((LPOLESTR)strClsid.GetBuffer(), &clsid);
                        group->AddItem(new GraphStudio::PropItem(_T("CLSID"), CString(szGuid), false));

                        DSUtil::FilterTemplate ft;
		                if (filters.FindTemplateByCLSID(clsid, &ft))
                        {
                            group->AddItem(new GraphStudio::PropItem(_T("Name"), CString(ft.name), false));
                            group->AddItem(new GraphStudio::PropItem(_T("File"), CString(ft.file), false));
                        }
                        else if (clsid == CLSID_StillVideo)
                        {
                            group->AddItem(new GraphStudio::PropItem(_T("Name"), _T("Generate Still Video"), false));
                        }
                    }

                    szLength = 40;
                    if (ERROR_SUCCESS == rkKey.QueryStringValue(_T("Media Type"), szGuid, &szLength))
                    {
                        CString strMT;
                        GUID clsidMT = {0};
                        CLSIDFromString((LPOLESTR)strMT.GetBuffer(), &clsidMT);
                        GraphStudio::NameGuid(clsidMT,strMT,CgraphstudioApp::g_showGuidsOfKnownTypes);
                        group->AddItem(new GraphStudio::PropItem(_T("MediaType"), strMT, false));
                    }

                    szLength = 40;
                    if (ERROR_SUCCESS == rkKey.QueryStringValue(_T("SubType"), szGuid, &szLength))
                    {
                        CString strST = szGuid;
                        GUID clsidST = {0};
                        CLSIDFromString((LPOLESTR)strST.GetBuffer(), &clsidST);
                        GraphStudio::NameGuid(clsidST,strST,CgraphstudioApp::g_showGuidsOfKnownTypes);
                        group->AddItem(new GraphStudio::PropItem(_T("SubType"), strST, false));
                    }

                    // last Change of this key
                    FILETIME timeMod = {0};
                    if (ERROR_SUCCESS == RegQueryInfoKey(rkKey, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &timeMod))
                        group->AddItem(new GraphStudio::PropItem(_T("Modified"), CTime(timeMod)));

                    page_extensions->info.AddItem(group);
                }
                rkKey.Close();
                szNameLength = 50;
            }
            page_extensions->UpdateTree();
        }
        rkRoot.Close();
    }

    // search for registered byte pattern
    if (page_bytes)
    {
        ATL::CRegKey rkRoot;
        CString strRoot = _T("Media Type");
        if (ERROR_SUCCESS == rkRoot.Open(HKEY_CLASSES_ROOT, strRoot, KEY_READ))
        {
            TCHAR szMTName[40] = {0};
            DWORD szMTNameLength = 40;
            DWORD i = 0;
            while (ERROR_NO_MORE_ITEMS != rkRoot.EnumKey(i++, szMTName, &szMTNameLength))
            {
                CString strMT = szMTName;
                GUID clsidMT = {0};
                if(NOERROR == CLSIDFromString((LPOLESTR)strMT.GetBuffer(), &clsidMT))
                {
                    GraphStudio::NameGuid(clsidMT,strMT,false);

                    CString strKeyMT = strRoot;
                    strKeyMT.Append(_T("\\"));
                    strKeyMT.Append(szMTName);
                    CRegKey rkKeyMT;
                    if(ERROR_SUCCESS == rkKeyMT.Open(HKEY_CLASSES_ROOT, strKeyMT, KEY_READ))
                    {
                        TCHAR szSTName[40] = {0};
                        DWORD szSTNameLength = 40;
                        DWORD j = 0;
                        while (ERROR_NO_MORE_ITEMS != rkKeyMT.EnumKey(j++, szSTName, &szSTNameLength))
                        {
                            CString strST = szSTName;
                            GUID clsidST = {0};
                            if(NOERROR == CLSIDFromString((LPOLESTR)strST.GetBuffer(), &clsidST))
                            {
                                GraphStudio::NameGuid(clsidST,strST,false);

                                CString strKeyST = strKeyMT;
                                strKeyST.Append(_T("\\"));
                                strKeyST.Append(szSTName);
                                CRegKey rkKeyST;

                                if(ERROR_SUCCESS == rkKeyST.Open(HKEY_CLASSES_ROOT, strKeyST, KEY_READ))
                                {
                                    TCHAR szGuid[40] = {0};
                                    DWORD szLength = 40;
                                    if (ERROR_SUCCESS == rkKeyST.QueryStringValue(_T("Source Filter"), szGuid, &szLength))
                                    {
                                        CString groupName = strMT;
                                        groupName.Append(_T("\\"));
                                        groupName.Append(strST);
                                        GraphStudio::PropItem* group = new GraphStudio::PropItem(groupName);

                                        CString strClsid = szGuid;
                                        GUID clsid = {0};
                                        CLSIDFromString((LPOLESTR)strClsid.GetBuffer(), &clsid);
                                        group->AddItem(new GraphStudio::PropItem(_T("CLSID"), CString(szGuid), false));

                                        DSUtil::FilterTemplate ft;
		                                if (filters.FindTemplateByCLSID(clsid, &ft))
                                        {
                                            group->AddItem(new GraphStudio::PropItem(_T("Name"), CString(ft.name), false));
                                            group->AddItem(new GraphStudio::PropItem(_T("File"), CString(ft.file), false));
                                        }

                                        // Enumerate the values
                                        TCHAR szValueName[5] = {0};
                                        DWORD szValueNameLength = 5;
                                        DWORD dwRegType;
                                        DWORD k = 0;
                                        long ret = 0;
                                        while (ERROR_NO_MORE_ITEMS != (ret = RegEnumValue(rkKeyST, k++, szValueName, &szValueNameLength, NULL, &dwRegType, NULL, NULL)))
                                        {
                                            if (dwRegType == REG_SZ && ret == ERROR_SUCCESS)
                                            {
                                                TCHAR szValue[255] = {0};
                                                DWORD szValueLength = 255;
                                                if (ERROR_SUCCESS == rkKeyST.QueryStringValue(szValueName, szValue, &szValueLength))
                                                {
                                                    CString strValue = szValue;
                                                    CStringArray arValues;
                                                    DSUtil::Tokenizer(strValue, _T(","), arValues);
                                                    
                                                    CString strResultValue;
                                                    bool lastTokenWasEmpty = false;
                                                    for (int i=0; i<arValues.GetCount(); i++)
                                                    {
                                                        CString strToken = arValues.GetAt(i);
                                                        strToken = strToken.Trim();

                                                        switch (i % 4)
                                                        {
                                                            case 0:
                                                                if (i > 0) strResultValue.Append(_T(" && ["));
                                                                else strResultValue.Append(_T("["));
                                                                strResultValue.Append(strToken);
                                                                break;

                                                            case 1:
                                                                strResultValue.Append(_T(","));
                                                                strResultValue.Append(strToken);
                                                                break;

                                                            case 2:
                                                                strResultValue.Append(_T("] => ("));
                                                                strResultValue.Append(ByteFormatString(strToken));
                                                                break;

                                                            case 3:
                                                                if (!lastTokenWasEmpty) strResultValue.Append(_T(" = "));
                                                                strResultValue.Append(ByteFormatString(strToken));
                                                                strResultValue.Append(_T(")"));
                                                                break;
                                                        }

                                                        lastTokenWasEmpty = strToken.IsEmpty();
                                                    }

                                                    group->AddItem(new GraphStudio::PropItem(CString(szValueName), strResultValue, false));
                                                    // TODO maybe better format of the byte string
                                                }
                                            }
                                            szValueNameLength = 5;
                                        }

                                        // last Change of this key
                                        FILETIME timeMod = {0};
                                        if (ERROR_SUCCESS == RegQueryInfoKey(rkKeyST, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &timeMod))
                                            group->AddItem(new GraphStudio::PropItem(_T("Modified"), CTime(timeMod)));

                                        page_bytes->info.AddItem(group);
                                    }
                                }
                                rkKeyST.Close();
                            }
                            szSTNameLength = 40;
                        }
                    }
                    rkKeyMT.Close();
                }
                szMTNameLength = 40;
            }
            page_bytes->UpdateTree();
        }
        rkRoot.Close();
    }
}
Example #19
0
void CWebServer::Init()
{
    m_internalpages[_T("/")] = &CWebClientSocket::OnIndex;
    m_internalpages[_T("/404.html")] = &CWebClientSocket::OnError404;
    m_internalpages[_T("/browser.html")] = &CWebClientSocket::OnBrowser;
    m_internalpages[_T("/command.html")] = &CWebClientSocket::OnCommand;
    m_internalpages[_T("/controls.html")] = &CWebClientSocket::OnControls;
    m_internalpages[_T("/index.html")] = &CWebClientSocket::OnIndex;
    m_internalpages[_T("/info.html")] = &CWebClientSocket::OnInfo;
    m_internalpages[_T("/player.html")] = &CWebClientSocket::OnPlayer;
    m_internalpages[_T("/snapshot.jpg")] = &CWebClientSocket::OnSnapShotJpeg;
    m_internalpages[_T("/status.html")] = &CWebClientSocket::OnStatus;
    m_internalpages[_T("/variables.html")] = &CWebClientSocket::OnVariables;
    m_internalpages[_T("/viewres.html")] = &CWebClientSocket::OnViewRes;

    m_downloads[_T("/default.css")] = IDF_DEFAULT_CSS;
    m_downloads[_T("/images/1pix.png")] = IDF_1PIX_PNG;
    m_downloads[_T("/images/bottomside.png")] = IDF_BOTTOMSIDE_PNG;
    m_downloads[_T("/images/controlback.png")] = IDF_CONTROLBACK_PNG;
    m_downloads[_T("/images/controlbuttondecrate.png")] = IDF_CONTROLBUTTONDECRATE_PNG;
    m_downloads[_T("/images/controlbuttonincrate.png")] = IDF_CONTROLBUTTONINCRATE_PNG;
    m_downloads[_T("/images/controlbuttonpause.png")] = IDF_CONTROLBUTTONPAUSE_PNG;
    m_downloads[_T("/images/controlbuttonplay.png")] = IDF_CONTROLBUTTONPLAY_PNG;
    m_downloads[_T("/images/controlbuttonskipback.png")] = IDF_CONTROLBUTTONSKIPBACK_PNG;
    m_downloads[_T("/images/controlbuttonskipforward.png")] = IDF_CONTROLBUTTONSKIPFORWARD_PNG;
    m_downloads[_T("/images/controlbuttonstep.png")] = IDF_CONTROLBUTTONSTEP_PNG;
    m_downloads[_T("/images/controlbuttonstop.png")] = IDF_CONTROLBUTTONSTOP_PNG;
    m_downloads[_T("/images/controlvolumebar.png")] = IDF_CONTROLVOLUMEBAR_PNG;
    m_downloads[_T("/images/controlvolumegrip.png")] = IDF_CONTROLVOLUMEGRIP_PNG;
    m_downloads[_T("/images/controlvolumeoff.png")] = IDF_CONTROLVOLUMEOFF_PNG;
    m_downloads[_T("/images/controlvolumeon.png")] = IDF_CONTROLVOLUMEON_PNG;
    m_downloads[_T("/images/headerback.png")] = IDF_HEADERBACK_PNG;
    m_downloads[_T("/images/headerclose.png")] = IDF_HEADERCLOSE_PNG;
    m_downloads[_T("/images/headericon.png")] = IDF_HEADERICON_PNG;
    m_downloads[_T("/images/leftbottomside.png")] = IDF_LEFTBOTTOMSIDE_PNG;
    m_downloads[_T("/images/leftside.png")] = IDF_LEFTSIDE_PNG;
    m_downloads[_T("/images/rightbottomside.png")] = IDF_RIGHTBOTTOMSIDE_PNG;
    m_downloads[_T("/images/rightside.png")] = IDF_RIGHTSIDE_PNG;
    m_downloads[_T("/images/seekbargrip.png")] = IDF_SEEKBARGRIP_PNG;
    m_downloads[_T("/images/seekbarleft.png")] = IDF_SEEKBARLEFT_PNG;
    m_downloads[_T("/images/seekbarmid.png")] = IDF_SEEKBARMID_PNG;
    m_downloads[_T("/images/seekbarright.png")] = IDF_SEEKBARRIGHT_PNG;
    m_downloads[_T("/images/sliderback.png")] = IDF_SLIDERBACK_PNG;
    m_downloads[_T("/images/slidergrip.png")] = IDF_SLIDERGRIP_PNG;
    m_downloads[_T("/images/vbg.png")] = IDF_VBR_PNG;
    m_downloads[_T("/images/vbs.png")] = IDF_VBS_PNG;
    m_downloads[_T("/javascript.js")] = IDF_JAVASCRIPT;

    CRegKey key;
    CString str(_T("MIME\\Database\\Content Type"));
    if (ERROR_SUCCESS == key.Open(HKEY_CLASSES_ROOT, str, KEY_READ)) {
        TCHAR buff[256];
        DWORD len = _countof(buff);
        for (int i = 0; ERROR_SUCCESS == key.EnumKey(i, buff, &len); i++, len = _countof(buff)) {
            CRegKey mime;
            TCHAR ext[64];
            ULONG len2 = _countof(ext);
            if (ERROR_SUCCESS == mime.Open(HKEY_CLASSES_ROOT, str + _T("\\") + buff, KEY_READ)
                    && ERROR_SUCCESS == mime.QueryStringValue(_T("Extension"), ext, &len2)) {
                m_mimes[CStringA(ext).MakeLower()] = CStringA(buff).MakeLower();
            }
        }
    }

    m_mimes[".css"] = "text/css";
    m_mimes[".gif"] = "image/gif";
    m_mimes[".html"] = "text/html";
    m_mimes[".jpeg"] = "image/jpeg";
    m_mimes[".jpg"] = "image/jpeg";
    m_mimes[".js"] = "text/javascript";
    m_mimes[".png"] = "image/png";
    m_mimes[".txt"] = "text/plain";
}
Example #20
0
CWebServer::CWebServer(CMainFrame* pMainFrame, int nPort)
	: m_pMainFrame(pMainFrame)
	, m_nPort(nPort)
{
	if (m_internalpages.IsEmpty()) {
		m_internalpages[_T("/")] = &CWebClientSocket::OnIndex;
		m_internalpages[_T("/index.html")] = &CWebClientSocket::OnIndex;
		m_internalpages[_T("/info.html")] = &CWebClientSocket::OnInfo;
		m_internalpages[_T("/browser.html")] = &CWebClientSocket::OnBrowser;
		m_internalpages[_T("/controls.html")] = &CWebClientSocket::OnControls;
		m_internalpages[_T("/command.html")] = &CWebClientSocket::OnCommand;
		m_internalpages[_T("/status.html")] = &CWebClientSocket::OnStatus;
		m_internalpages[_T("/player.html")] = &CWebClientSocket::OnPlayer;
		m_internalpages[_T("/variables.html")] = &CWebClientSocket::OnVariables;
		m_internalpages[_T("/snapshot.jpg")] = &CWebClientSocket::OnSnapShotJpeg;
		m_internalpages[_T("/404.html")] = &CWebClientSocket::OnError404;
		m_internalpages[_T("/convres.html")] = &CWebClientSocket::OnConvRes;
	}

	if (m_downloads.IsEmpty()) {
		m_downloads[_T("/default.css")] = IDF_DEFAULT_CSS;
		m_downloads[_T("/vbg.png")] = IDF_VBR_PNG;
		m_downloads[_T("/vbs.png")] = IDF_VBS_PNG;
		m_downloads[_T("/sliderbar.gif")] = IDF_SLIDERBAR_GIF;
		m_downloads[_T("/slidergrip.gif")] = IDF_SLIDERGRIP_GIF;
		m_downloads[_T("/sliderback.png")] = IDF_SLIDERBACK_PNG;
		m_downloads[_T("/1pix.gif")] = IDF_1PIX_GIF;
		m_downloads[_T("/headericon.png")] = IDF_HEADERICON_PNG;
		m_downloads[_T("/headerback.png")] = IDF_HEADERBACK_PNG;
		m_downloads[_T("/headerclose.png")] = IDF_HEADERCLOSE_PNG;
		m_downloads[_T("/leftside.png")] = IDF_LEFTSIDE_PNG;
		m_downloads[_T("/rightside.png")] = IDF_RIGHTSIDE_PNG;
		m_downloads[_T("/bottomside.png")] = IDF_BOTTOMSIDE_PNG;
		m_downloads[_T("/leftbottomside.png")] = IDF_LEFTBOTTOMSIDE_PNG;
		m_downloads[_T("/rightbottomside.png")] = IDF_RIGHTBOTTOMSIDE_PNG;
		m_downloads[_T("/seekbarleft.png")] = IDF_SEEKBARLEFT_PNG;
		m_downloads[_T("/seekbarmid.png")] = IDF_SEEKBARMID_PNG;
		m_downloads[_T("/seekbarright.png")] = IDF_SEEKBARRIGHT_PNG;
		m_downloads[_T("/seekbargrip.png")] = IDF_SEEKBARGRIP_PNG;
		m_downloads[_T("/logo.png")] = DEF_LOGO;
		m_downloads[_T("/controlback.png")] = IDF_CONTROLBACK_PNG;
		m_downloads[_T("/controlbuttonplay.png")] = IDF_CONTROLBUTTONPLAY_PNG;
		m_downloads[_T("/controlbuttonpause.png")] = IDF_CONTROLBUTTONPAUSE_PNG;
		m_downloads[_T("/controlbuttonstop.png")] = IDF_CONTROLBUTTONSTOP_PNG;
		m_downloads[_T("/controlbuttonskipback.png")] = IDF_CONTROLBUTTONSKIPBACK_PNG;
		m_downloads[_T("/controlbuttondecrate.png")] = IDF_CONTROLBUTTONDECRATE_PNG;
		m_downloads[_T("/controlbuttonincrate.png")] = IDF_CONTROLBUTTONINCRATE_PNG;
		m_downloads[_T("/controlbuttonskipforward.png")] = IDF_CONTROLBUTTONSKIPFORWARD_PNG;
		m_downloads[_T("/controlbuttonstep.png")] = IDF_CONTROLBUTTONSTEP_PNG;
		m_downloads[_T("/controlvolumeon.png")] = IDF_CONTROLVOLUMEON_PNG;
		m_downloads[_T("/controlvolumeoff.png")] = IDF_CONTROLVOLUMEOFF_PNG;
		m_downloads[_T("/controlvolumebar.png")] = IDF_CONTROLVOLUMEBAR_PNG;
		m_downloads[_T("/controlvolumegrip.png")] = IDF_CONTROLVOLUMEGRIP_PNG;
	}

	CRegKey key;
	CString str(_T("MIME\\Database\\Content Type"));
	if (ERROR_SUCCESS == key.Open(HKEY_CLASSES_ROOT, str, KEY_READ)) {
		TCHAR buff[256];
		DWORD len = countof(buff);
		for (int i = 0; ERROR_SUCCESS == key.EnumKey(i, buff, &len); i++, len = countof(buff)) {
			CRegKey mime;
			TCHAR ext[64];
			ULONG len = countof(ext);
			if (ERROR_SUCCESS == mime.Open(HKEY_CLASSES_ROOT, str + _T("\\") + buff, KEY_READ)
					&& ERROR_SUCCESS == mime.QueryStringValue(_T("Extension"), ext, &len)) {
				m_mimes[CStringA(ext).MakeLower()] = CStringA(buff).MakeLower();
			}
		}
	}

	m_mimes[".html"] = "text/html";
	m_mimes[".txt"] = "text/plain";
	m_mimes[".css"] = "text/css";
	m_mimes[".gif"] = "image/gif";
	m_mimes[".jpeg"] = "image/jpeg";
	m_mimes[".jpg"] = "image/jpeg";
	m_mimes[".png"] = "image/png";
	m_mimes[".js"] = "text/javascript";

	GetModuleFileName(AfxGetInstanceHandle(), str.GetBuffer(_MAX_PATH), _MAX_PATH);
	str.ReleaseBuffer();
	m_webroot = CPath(str);
	m_webroot.RemoveFileSpec();

	CString WebRoot = AfxGetAppSettings().strWebRoot;
	WebRoot.Replace('/', '\\');
	WebRoot.Trim();
	CPath p(WebRoot);
	if (WebRoot.Find(_T(":\\")) < 0 && WebRoot.Find(_T("\\\\")) < 0) {
		m_webroot.Append(WebRoot);
	} else {
		m_webroot = p;
	}
	m_webroot.Canonicalize();
	m_webroot.MakePretty();
	if (!m_webroot.IsDirectory()) {
		m_webroot = CPath();
	}

	CAtlList<CString> sl;
	Explode(AfxGetAppSettings().strWebServerCGI, sl, ';');
	POSITION pos = sl.GetHeadPosition();
	while (pos) {
		CAtlList<CString> sl2;
		CString ext = Explode(sl.GetNext(pos), sl2, '=', 2);
		if (sl2.GetCount() < 2) {
			continue;
		}
		m_cgi[ext] = sl2.GetTail();
	}

	m_ThreadId = 0;
	m_hThread = ::CreateThread(NULL, 0, StaticThreadProc, (LPVOID)this, 0, &m_ThreadId);
}