void UnquoteExternal(string &strStr) { size_t len = strStr.GetLength(); if (len > 1 && strStr.At(0) == L'\"' && strStr.At(len-1) == L'\"') { strStr.SetLength(len-1); strStr.LShift(1); } }
int GetRegKey(const wchar_t *Key,const wchar_t *ValueName,string &strValueData,const wchar_t *Default,DWORD *pType) { int ExitCode=!ERROR_SUCCESS; HKEY hKey=OpenRegKey(Key); if (hKey) // надобно проверить! { DWORD Type,QueryDataSize=0; if ((ExitCode = RegQueryValueEx( hKey, ValueName, 0, &Type, nullptr, &QueryDataSize )) == ERROR_SUCCESS) { wchar_t *TempBuffer = strValueData.GetBuffer(QueryDataSize/sizeof(wchar_t)+1); // ...то выделим сколько надо ExitCode = RegQueryValueEx(hKey,ValueName,0,&Type,(unsigned char *)TempBuffer,&QueryDataSize); strValueData.ReleaseBuffer(QueryDataSize/sizeof(wchar_t)); if (strValueData.GetLength() > 0 && !strValueData.At(strValueData.GetLength()-1)) strValueData.SetLength(strValueData.GetLength()-1); } if (pType) *pType=Type; CloseRegKey(hKey); } if (ExitCode!=ERROR_SUCCESS) { strValueData = Default; return FALSE; } return TRUE; }
int PrepareHotKey(string &strHotKey) { int FuncNum=0; if (strHotKey.GetLength() > 1) { // если хоткей больше 1 символа, считаем это случаем "F?", причем при кривизне всегда будет "F1" FuncNum=_wtoi(strHotKey.CPtr()+1); if (FuncNum < 1 || FuncNum > 24) { FuncNum=1; strHotKey=L"F1"; } } else { // при наличии "&" продублируем if (strHotKey.At(0) == L'&') strHotKey += L"&"; } return FuncNum; }