void CWordPadApp::UpdateRegistry() { USES_CONVERSION; LPOLESTR lpszClassID = NULL; CDocTemplate* pDocTemplate = &DocTemplate; // get registration info from doc template string CString strServerName; CString strLocalServerName; CString strLocalShortName; if (!pDocTemplate->GetDocString(strServerName, CDocTemplate::regFileTypeId) || strServerName.IsEmpty()) { TRACE0("Error: not enough information in DocTemplate to register OLE server.\n"); return; } if (!pDocTemplate->GetDocString(strLocalServerName, CDocTemplate::regFileTypeName)) strLocalServerName = strServerName; // use non-localized name if (!pDocTemplate->GetDocString(strLocalShortName, CDocTemplate::fileNewName)) strLocalShortName = strLocalServerName; // use long name ASSERT(strServerName.Find(' ') == -1); // no spaces allowed ::StringFromCLSID(clsid, &lpszClassID); ASSERT (lpszClassID != NULL); // get path name to server TCHAR szLongPathName[_MAX_PATH]; TCHAR szShortPathName[_MAX_PATH]; ::GetModuleFileName(AfxGetInstanceHandle(), szLongPathName, _MAX_PATH); ::GetShortPathName(szLongPathName, szShortPathName, _MAX_PATH); LPCTSTR rglpszSymbols[NUM_REG_ARGS]; rglpszSymbols[0] = OLE2CT(lpszClassID); rglpszSymbols[1] = strServerName; rglpszSymbols[2] = szShortPathName; rglpszSymbols[3] = strLocalShortName; rglpszSymbols[4] = strLocalServerName; rglpszSymbols[5] = m_pszAppName; // will usually be long, readable name rglpszSymbols[6] = NULL; if (RegisterHelper((LPCTSTR*)rglpszWordPadRegister, rglpszSymbols, FALSE)) RegisterHelper((LPCTSTR*)rglpszWordPadOverwrite, rglpszSymbols, TRUE); // RegisterExt(_T(".txt"), _T("txtfile"), IDS_TEXT_DOC, rglpszSymbols, // (LPCTSTR*)rglpszTxtExtRegister, (LPCTSTR*)rglpszTxtRegister, 3); RegisterExt(_T(".rtf"), _T("rtffile"), IDS_RICHTEXT_DOC, rglpszSymbols, (LPCTSTR*)rglpszRtfExtRegister, (LPCTSTR*)rglpszRtfRegister, 1); RegisterExt(_T(".wri"), _T("wrifile"), IDS_WRITE_DOC, rglpszSymbols, (LPCTSTR*)rglpszWriExtRegister, (LPCTSTR*)rglpszWriRegister, 2); RegisterExt(_T(".doc"), _T("WordPad.Document.1"), IDS_WINWORD6_DOC, rglpszSymbols, (LPCTSTR*)rglpszDocExtRegister, (LPCTSTR*)rglpszDocRegister, 1); // free memory for class ID ASSERT(lpszClassID != NULL); CoTaskMemFree(lpszClassID); }
// ----------------------------------------------------------------------- // Register all selected extensions void RegisterExtensions(void) { int i = 0; CStr BufString; for(i = 0; i <= (long) ListViewItemCount(FRMRegsListview) - 1; i++) { if(ListViewGetItemCheckbox(FRMRegsListview, i) == 1) { BufString = ListViewGetItemText(FRMRegsListview, i, 0).Upper_Case(); if(BufString == "MED") { RegisterExt(ListViewGetItemText(FRMRegsListview, i, 0), ICON_ASM + 1); } else if(BufString == "MWS") { RegisterExt(ListViewGetItemText(FRMRegsListview, i, 0), ICON_KEYBOARD + 1); } else { RegisterExt(ListViewGetItemText(FRMRegsListview, i, 0), ICON_NEW + 1); } } } }
//--------------------------------------------------------------------------- __fastcall TMainForm::TMainForm(TComponent *Owner) : TForm(Owner) { try { AnsiString CursorFile = ExtractFilePath(Application->ExeName) + "Images\\move.cur"; HCURSOR hCursor = LoadCursorFromFile(CursorFile.c_str()); if(hCursor) Screen->Cursors[crDrag] = hCursor; } catch(...) { } AnsiString sCmd = ParamStr(0); //current program AnsiString sExt = ".cpf"; TExtInfo *inf; try { inf = Reg1->GetExtInfo(sExt); if (inf->ExecutePath != "\"" + ParamStr(0) + "\" \"%1\"") RegisterExt(); } catch(...) { RegisterExt(); } NewClientWP = (FARPROC)MakeObjectInstance(MDIClientWndProc); // Bg additions OldClientWP = (FARPROC)SetWindowLong(ClientHandle, GWL_WNDPROC, (LONG)NewClientWP); }
BOOL CPPageFormats::OnApply() { UpdateData(); { int i = m_list.GetSelectionMark(); if(i >= 0) i = (int)m_list.GetItemData(i); if(i >= 0) { CMediaFormats& mf = AfxGetAppSettings().Formats; mf[i].SetExts(m_exts); m_exts = mf[i].GetExtsWithPeriod(); UpdateData(FALSE); } } CMediaFormats& mf = AfxGetAppSettings().Formats; CString AppIcon = _T(""); TCHAR buff[_MAX_PATH]; if(::GetModuleFileName(AfxGetInstanceHandle(), buff, MAX_PATH)) { AppIcon = buff; AppIcon = "\""+AppIcon+"\""; AppIcon += _T(",0"); } if (m_pAAR) { // Register MPC for the windows "Default application" manager CRegKey key; if(ERROR_SUCCESS == key.Open(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\RegisteredApplications"))) { key.SetStringValue(_T("Media Player Classic"), g_strRegisteredKey); if(ERROR_SUCCESS != key.Create(HKEY_LOCAL_MACHINE, g_strRegisteredKey)) return(false); // ==>> TODO icon !!! key.SetStringValue(_T("ApplicationDescription"), ResStr(IDS_APP_DESCRIPTION), REG_EXPAND_SZ); key.SetStringValue(_T("ApplicationIcon"), AppIcon, REG_EXPAND_SZ); key.SetStringValue(_T("ApplicationName"), ResStr(IDR_MAINFRAME), REG_EXPAND_SZ); } } f_setContextFiles = m_fContextFiles.GetCheck(); f_setAssociatedWithIcon = m_fAssociatedWithIcons.GetCheck(); for(int i = 0; i < m_list.GetItemCount(); i++) { int iChecked = GetChecked(i); if(iChecked == 2) continue; CAtlList<CString> exts; Explode(mf[(int)m_list.GetItemData(i)].GetExtsWithPeriod(), exts, ' '); POSITION pos = exts.GetHeadPosition(); while(pos) RegisterExt(exts.GetNext(pos), mf[(int)m_list.GetItemData(i)].GetLabel(), !!iChecked); } CRegKey key; if(m_fContextDir.GetCheck()) { if(ERROR_SUCCESS == key.Create(HKEY_CLASSES_ROOT, _T("Directory\\shell\\mplayerc.enqueue"))) { key.SetStringValue(NULL, ResStr(IDS_ADD_TO_PLAYLIST)); } if(ERROR_SUCCESS == key.Create(HKEY_CLASSES_ROOT, _T("Directory\\shell\\mplayerc.enqueue\\command"))) { key.SetStringValue(NULL, GetEnqueueCommand()); } if(ERROR_SUCCESS == key.Create(HKEY_CLASSES_ROOT, _T("Directory\\shell\\mplayerc.play"))) { key.SetStringValue(NULL, ResStr(IDS_OPEN_WITH_MPC)); } if(ERROR_SUCCESS == key.Create(HKEY_CLASSES_ROOT, _T("Directory\\shell\\mplayerc.play\\command"))) { key.SetStringValue(NULL, GetOpenCommand()); } } else { key.Attach(HKEY_CLASSES_ROOT); key.RecurseDeleteKey(_T("Directory\\shell\\mplayerc.enqueue")); key.RecurseDeleteKey(_T("Directory\\shell\\mplayerc.play")); } { SetListItemState(m_list.GetSelectionMark()); } AddAutoPlayToRegistry(AP_VIDEO, !!m_apvideo.GetCheck()); AddAutoPlayToRegistry(AP_MUSIC, !!m_apmusic.GetCheck()); AddAutoPlayToRegistry(AP_AUDIOCD, !!m_apaudiocd.GetCheck()); AddAutoPlayToRegistry(AP_DVDMOVIE, !!m_apdvd.GetCheck()); AppSettings& s = AfxGetAppSettings(); s.Formats.SetRtspHandler(m_iRtspHandler==0?RealMedia:m_iRtspHandler==1?QuickTime:DirectShow, !!m_fRtspFileExtFirst); s.fAssociatedWithIcons = !!m_fAssociatedWithIcons.GetCheck(); SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL); return __super::OnApply(); }
BOOL CPPageFormats::OnApply() { UpdateData(); { int i = m_list.GetSelectionMark(); if (i >= 0) { i = (int)m_list.GetItemData(i); } if (i >= 0) { CMediaFormats& mf = AfxGetAppSettings().m_Formats; mf[i].SetExts(m_exts); m_exts = mf[i].GetExtsWithPeriod(); UpdateData(FALSE); } } CMediaFormats& mf = AfxGetAppSettings().m_Formats; RegisterApp(); f_setContextFiles = m_fContextFiles.GetCheck(); f_setAssociatedWithIcon = m_fAssociatedWithIcons.GetCheck(); if (m_bFileExtChanged) { for (int i = 0; i < m_list.GetItemCount(); i++) { int iChecked = GetChecked(i); if (iChecked == 2) { continue; } CAtlList<CString> exts; Explode(mf[(int)m_list.GetItemData(i)].GetExtsWithPeriod(), exts, ' '); POSITION pos = exts.GetHeadPosition(); while (pos) { RegisterExt(exts.GetNext(pos), mf[(int)m_list.GetItemData(i)].GetDescription(), !!iChecked); } } } CRegKey key; if (m_fContextDir.GetCheck()) { if (ERROR_SUCCESS == key.Create(HKEY_CLASSES_ROOT, _T("Directory\\shell\\") PROGID _T(".enqueue"))) { key.SetStringValue(NULL, ResStr(IDS_ADD_TO_PLAYLIST)); } if (ERROR_SUCCESS == key.Create(HKEY_CLASSES_ROOT, _T("Directory\\shell\\") PROGID _T(".enqueue\\command"))) { key.SetStringValue(NULL, GetEnqueueCommand()); } if (ERROR_SUCCESS == key.Create(HKEY_CLASSES_ROOT, _T("Directory\\shell\\") PROGID _T(".play"))) { key.SetStringValue(NULL, ResStr(IDS_OPEN_WITH_MPC)); } if (ERROR_SUCCESS == key.Create(HKEY_CLASSES_ROOT, _T("Directory\\shell\\") PROGID _T(".play\\command"))) { key.SetStringValue(NULL, GetOpenCommand()); } } else { key.Attach(HKEY_CLASSES_ROOT); key.RecurseDeleteKey(_T("Directory\\shell\\") PROGID _T(".enqueue")); key.RecurseDeleteKey(_T("Directory\\shell\\") PROGID _T(".play")); } { SetListItemState(m_list.GetSelectionMark()); } AddAutoPlayToRegistry(AP_VIDEO, !!m_apvideo.GetCheck()); AddAutoPlayToRegistry(AP_MUSIC, !!m_apmusic.GetCheck()); AddAutoPlayToRegistry(AP_AUDIOCD, !!m_apaudiocd.GetCheck()); AddAutoPlayToRegistry(AP_DVDMOVIE, !!m_apdvd.GetCheck()); AppSettings& s = AfxGetAppSettings(); s.m_Formats.SetRtspHandler(m_iRtspHandler==0?RealMedia:m_iRtspHandler==1?QuickTime:DirectShow, !!m_fRtspFileExtFirst); s.fAssociatedWithIcons = !!m_fAssociatedWithIcons.GetCheck(); SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL); return __super::OnApply(); }