void CInfo::Save() const { CS_LOCK CKey key; CreateMainKey(key, kKeyName); key.SetValue(kLevel, (UInt32)Level); key.SetValue(kArchiver, ArcType); key.SetValue(kShowPassword, ShowPassword); key.SetValue(kEncryptHeaders, EncryptHeaders); key.RecurseDeleteKey(kArcHistory); key.SetValue_Strings(kArcHistory, ArcPaths); key.RecurseDeleteKey(kOptionsKeyName); { CKey optionsKey; optionsKey.Create(key, kOptionsKeyName); for (int i = 0; i < Formats.Size(); i++) { const CFormatOptions &fo = Formats[i]; CKey fk; fk.Create(optionsKey, fo.FormatID); SetRegUInt32(fk, kLevel, fo.Level); SetRegUInt32(fk, kDictionary, fo.Dictionary); SetRegUInt32(fk, kOrder, fo.Order); SetRegUInt32(fk, kBlockSize, fo.BlockLogSize); SetRegUInt32(fk, kNumThreads, fo.NumThreads); SetRegString(fk, kMethod, fo.Method); SetRegString(fk, kOptions, fo.Options); SetRegString(fk, kEncryptionMethod, fo.EncryptionMethod); } } }
HRESULT CMainFrame::UpdateMenuURL(CMenu* Menu) { m_ListURL.RemoveAll(); // read from registry HKEY key; DWORD type, size, data_size; LONG lr; CString Path = CString(DCGF_TOOLS_REG_PATH) + "\\MenuURL"; size = MAX_PATH; data_size = 1024; char Name[MAX_PATH]; BYTE Data[1024]; //CMenu* Menu = CMenu::FromHandle(m_hMenuDefault); int Index = 0; lr = RegOpenKeyEx(HKEY_CURRENT_USER, Path, 0, KEY_READ, &key); if(lr==ERROR_SUCCESS){ while(ERROR_SUCCESS==RegEnumValue(key, Index, Name, &size, NULL, &type, Data, &data_size)){ if(type==REG_SZ){ m_ListURL.Add(Data); Menu->ModifyMenu(ID_HELP_WEB1 + Index, MF_BYCOMMAND|MF_STRING, ID_HELP_WEB1 + Index, Name); } if(m_ListURL.GetSize()==10) break; Index++; size = MAX_PATH; data_size = 1024; } } if(m_ListURL.GetSize()==0){ SetRegString(HKEY_CURRENT_USER, Path, "WME Homepage", "http://dead-code.org/"); SetRegString(HKEY_CURRENT_USER, Path, "WME Forum", "http://forum.dead-code.org/"); return UpdateMenuURL(Menu); } else{ for(int i=Index; i<10; i++){ Menu->RemoveMenu(ID_HELP_WEB1 + i, MF_BYCOMMAND); } } return S_OK; }
BOOL InstallRegStr(HKEY hkBase, char *szKeyName, char *szName, char *szValue) { char buf[256]; if (!SetRegString(hkBase, szKeyName, szName, szValue)) { sprintf(buf,"Couldn't set registry key %s\\%s",szKeyName,szName?szName:"(default)"); MessageBox(NULL, buf, "Install error", MB_OK); return FALSE; } return TRUE; }
void CApp::DoSomeNagging() { CString Magic = GetRegString(HKEY_CURRENT_USER, DCGF_TOOLS_REG_PATH, "BBID"); CNumEncoder Enc; Enc.DecodeFromString(Magic); CTime Time = CTime::GetCurrentTime(); int Year = Enc.GetNumber(0, Time.GetYear()); int Month = Enc.GetNumber(1, Time.GetMonth()); int Day = Enc.GetNumber(2, Time.GetDay()); int DaysUsed = Enc.GetNumber(3, 1); int Answer = Enc.GetNumber(4, 0); // 0..remind later, 1..done already, 2..don't wanna // we started a new day if(Year != Time.GetYear() || Month != Time.GetMonth() || Day != Time.GetDay()) { DaysUsed++; // nag every 10th day if(DaysUsed % 10 == 0 && Answer == 0) { // display dialog CReminderDlg Dlg; Dlg.DoModal(); Answer = Dlg.m_SelectedOption; } } Enc.SetNumber(0, Time.GetYear()); Enc.SetNumber(1, Time.GetMonth()); Enc.SetNumber(2, Time.GetDay()); Enc.SetNumber(3, DaysUsed); Enc.SetNumber(4, Answer); Magic = Enc.EncodeToString(); SetRegString(HKEY_CURRENT_USER, DCGF_TOOLS_REG_PATH, "BBID", Magic); }