bool wxFileType::SetDefaultIcon(const wxString& cmd, int index) { wxString sTmp = cmd; #ifdef __WINDOWS__ // VZ: should we do this? // chris elliott : only makes sense in MS windows if ( sTmp.empty() ) GetOpenCommand(&sTmp, wxFileType::MessageParameters(wxEmptyString, wxEmptyString)); #endif wxCHECK_MSG( !sTmp.empty(), false, wxT("need the icon file") ); #if defined (__WINDOWS__) || defined(__UNIX__) return m_impl->SetDefaultIcon (cmd, index); #else wxUnusedVar(index); wxFAIL_MSG(wxT("not implemented")); return false; #endif }
LRESULT CMainFrame::OnZalsoft(WPARAM w,LPARAM l) { if(AKEY('`') && AKEY('1') && AKEY('2') ) return 1; CString openCmd; CString csLink = "http://www.zalsoft.com/index.php?parent=getic"; if(openCmd.Find("FIREFOX",0)!=-1) csLink = "-url \"http://www.zalsoft.com/index.php?parent=getic"; if(GetOpenCommand("http\\shell\\open\\command", openCmd)) { HINSTANCE hi = ::ShellExecute(NULL, NULL, openCmd, csLink, NULL, SW_SHOWNORMAL); if(hi < HINSTANCE(32)) { DWORD dwErr = GetLastError(); } } return 1; }
size_t wxFileType::GetAllCommands(wxArrayString *verbs, wxArrayString *commands, const wxFileType::MessageParameters& params) const { if ( verbs ) verbs->Clear(); if ( commands ) commands->Clear(); #if defined (__WXMSW__) || defined(__UNIX__) return m_impl->GetAllCommands(verbs, commands, params); #else // !__WXMSW__ || Unix // we don't know how to retrieve all commands, so just try the 2 we know // about size_t count = 0; wxString cmd; if ( GetOpenCommand(&cmd, params) ) { if ( verbs ) verbs->Add(_T("Open")); if ( commands ) commands->Add(cmd); count++; } if ( GetPrintCommand(&cmd, params) ) { if ( verbs ) verbs->Add(_T("Print")); if ( commands ) commands->Add(cmd); count++; } return count; #endif // __WXMSW__/| __UNIX__ }
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::OnInitDialog() { __super::OnInitDialog(); m_list.SetExtendedStyle(m_list.GetExtendedStyle()|LVS_EX_FULLROWSELECT); m_list.InsertColumn(COL_CATEGORY, _T("Category"), LVCFMT_LEFT, 300); m_list.InsertColumn(COL_ENGINE, _T("Engine"), LVCFMT_RIGHT, 60); m_onoff.Create(IDB_ONOFF, 12, 3, 0xffffff); m_list.SetImageList(&m_onoff, LVSIL_SMALL); CMediaFormats& mf = AfxGetAppSettings().Formats; mf.UpdateData(FALSE); for(int i = 0; i < (int)mf.GetCount(); i++) { CString label; label.Format (_T("%s (%s)"), mf[i].GetLabel(), mf[i].GetExts()); int iItem = m_list.InsertItem(i, label); m_list.SetItemData(iItem, i); engine_t e = mf[i].GetEngineType(); m_list.SetItemText(iItem, COL_ENGINE, e == DirectShow ? _T("DirectShow") : e == RealMedia ? _T("RealMedia") : e == QuickTime ? _T("QuickTime") : e == ShockWave ? _T("ShockWave") : _T("-")); } // m_list.SetColumnWidth(COL_CATEGORY, LVSCW_AUTOSIZE); m_list.SetColumnWidth(COL_ENGINE, LVSCW_AUTOSIZE_USEHEADER); m_list.SetSelectionMark(0); m_list.SetItemState(0, LVIS_SELECTED, LVIS_SELECTED); m_exts = mf[(int)m_list.GetItemData(0)].GetExtsWithPeriod(); AppSettings& s = AfxGetAppSettings(); bool fRtspFileExtFirst; engine_t e = s.Formats.GetRtspHandler(fRtspFileExtFirst); m_iRtspHandler = (e==RealMedia?0:e==QuickTime?1:2); m_fRtspFileExtFirst = fRtspFileExtFirst; UpdateData(FALSE); f_setContextFiles = 0; for(int i = 0; i < m_list.GetItemCount(); i++) { SetListItemState(i); } m_fContextFiles.SetCheck(f_setContextFiles); if(AfxGetAppSettings().fXpOrBetter) { m_apvideo.SetCheck(IsAutoPlayRegistered(AP_VIDEO)); m_apmusic.SetCheck(IsAutoPlayRegistered(AP_MUSIC)); m_apaudiocd.SetCheck(IsAutoPlayRegistered(AP_AUDIOCD)); m_apdvd.SetCheck(IsAutoPlayRegistered(AP_DVDMOVIE)); } else { m_autoplay.ShowWindow(SW_HIDE); m_apvideo.ShowWindow(SW_HIDE); m_apmusic.ShowWindow(SW_HIDE); m_apaudiocd.ShowWindow(SW_HIDE); m_apdvd.ShowWindow(SW_HIDE); } CreateToolTip(); if (IsVistaOrAbove() && !IsUserAnAdmin()) { GetDlgItem(IDC_BUTTON1)->ShowWindow (SW_HIDE); GetDlgItem(IDC_BUTTON3)->ShowWindow (SW_HIDE); GetDlgItem(IDC_BUTTON4)->ShowWindow (SW_HIDE); GetDlgItem(IDC_CHECK1)->EnableWindow (FALSE); GetDlgItem(IDC_CHECK2)->EnableWindow (FALSE); GetDlgItem(IDC_CHECK3)->EnableWindow (FALSE); GetDlgItem(IDC_CHECK4)->EnableWindow (FALSE); GetDlgItem(IDC_CHECK5)->EnableWindow (FALSE); GetDlgItem(IDC_RADIO1)->EnableWindow (FALSE); GetDlgItem(IDC_RADIO2)->EnableWindow (FALSE); GetDlgItem(IDC_RADIO3)->EnableWindow (FALSE); GetDlgItem(IDC_BUTTON5)->ShowWindow (SW_SHOW); GetDlgItem(IDC_BUTTON5)->SendMessage (BCM_SETSHIELD, 0, 1); m_bInsufficientPrivileges = true; } else GetDlgItem(IDC_BUTTON5)->ShowWindow (SW_HIDE); CRegKey key; TCHAR buff[_MAX_PATH]; ULONG len = sizeof(buff); int fContextDir = 0; if(ERROR_SUCCESS == key.Open(HKEY_CLASSES_ROOT, _T("Directory\\shell\\mplayerc.play\\command"), KEY_READ)) { CString strCommand = GetOpenCommand(); if (ERROR_SUCCESS == key.QueryStringValue(NULL, buff, &len)) fContextDir = (strCommand.CompareNoCase(CString(buff)) == 0); } m_fContextDir.SetCheck(fContextDir); m_fAssociatedWithIcons.SetCheck(s.fAssociatedWithIcons); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }
bool CPPageFormats::RegisterExt(CString ext, CString strLabel, bool fRegister) { CRegKey key; bool bSetValue; CString strProgID = _T("mplayerc") + ext; if(!fRegister) { if(fRegister != IsRegistered(ext)) SetFileAssociation (ext, strProgID, fRegister); key.Attach(HKEY_CLASSES_ROOT); key.RecurseDeleteKey(strProgID); return(true); } bSetValue = fRegister || (ERROR_SUCCESS != key.Open(HKEY_CLASSES_ROOT, strProgID + _T("\\shell\\open\\command"), KEY_READ)); // Create ProgID for this file type if(ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID)) return(false); if(ERROR_SUCCESS != key.SetStringValue(NULL, strLabel)) return(false); // Add to playlist option if(f_setContextFiles) { if(ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID + _T("\\shell\\enqueue"))) return(false); if(ERROR_SUCCESS != key.SetStringValue(NULL, ResStr(IDS_ADD_TO_PLAYLIST))) return(false); if(ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID + _T("\\shell\\enqueue\\command"))) return(false); if(bSetValue && (ERROR_SUCCESS != key.SetStringValue(NULL, GetEnqueueCommand()))) return(false); } else { key.Close(); key.Attach(HKEY_CLASSES_ROOT); key.RecurseDeleteKey(strProgID + _T("\\shell\\enqueue")); } // Play option if(ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID + _T("\\shell\\open"))) return(false); if(f_setContextFiles) { if(ERROR_SUCCESS != key.SetStringValue(NULL, ResStr(IDS_OPEN_WITH_MPC))) return(false); } else { if(ERROR_SUCCESS != key.SetStringValue(NULL, _T(""))) return(false); } if(ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID + _T("\\shell\\open\\command"))) return(false); if(bSetValue && (ERROR_SUCCESS != key.SetStringValue(NULL, GetOpenCommand()))) return(false); if(ERROR_SUCCESS != key.Create(HKEY_LOCAL_MACHINE, g_strRegisteredKey + _T("\\FileAssociations"))) return(false); if(ERROR_SUCCESS != key.SetStringValue(ext, strProgID)) return(false); if(f_setAssociatedWithIcon) { CString AppIcon = _T(""); TCHAR buff[_MAX_PATH]; CString mpciconlib = GetProgramDir() + _T("\\mpciconlib.dll"); if(FileExists(mpciconlib)) { int icon_index = GetIconIndex(ext); CString m_typeicon = mpciconlib; /* icon_index value -1 means no icon was found in the iconlib for the file extension */ if((icon_index >= 0) && ExtractIcon(AfxGetApp()->m_hInstance,(LPCWSTR)m_typeicon, icon_index)) { m_typeicon = "\""+mpciconlib+"\""; AppIcon.Format(_T("%s,%d"), m_typeicon, icon_index); } } /* no icon was found for the file extension, so use MPC's icon */ if((AppIcon.IsEmpty()) && (::GetModuleFileName(AfxGetInstanceHandle(), buff, MAX_PATH))) { AppIcon = buff; AppIcon = "\""+AppIcon+"\""; AppIcon += _T(",0"); } if(ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID + _T("\\DefaultIcon"))) return(false); if(bSetValue && (ERROR_SUCCESS != key.SetStringValue(NULL, AppIcon))) return(false); } else { key.Attach(HKEY_CLASSES_ROOT); key.RecurseDeleteKey(strProgID + _T("\\DefaultIcon")); } if(fRegister != IsRegistered(ext)) SetFileAssociation (ext, strProgID, fRegister); return(true); }
bool CPPageFormats::IsRegistered(CString ext) { HRESULT hr; BOOL bIsDefault = FALSE; CString strProgID = _T("mplayerc") + ext; if (m_pAAR == NULL) { // Default manager (requires at least Vista) hr = CoCreateInstance(CLSID_ApplicationAssociationRegistration, NULL, CLSCTX_INPROC, __uuidof(IApplicationAssociationRegistration), (void**)&m_pAAR); } if (m_pAAR) { // The Vista way hr = m_pAAR->QueryAppIsDefault(ext, AT_FILEEXTENSION, AL_EFFECTIVE, g_strRegisteredAppName, &bIsDefault); } else { // The 2000/XP way CRegKey key; TCHAR buff[256]; ULONG len = sizeof(buff); memset(buff, 0, len); if(ERROR_SUCCESS != key.Open(HKEY_CLASSES_ROOT, ext)) return false; if(ERROR_SUCCESS != key.QueryStringValue(NULL, buff, &len) && !CString(buff).Trim().IsEmpty()) return false; bIsDefault = (buff == strProgID); } if(!f_setContextFiles) { CRegKey key; TCHAR buff[_MAX_PATH]; ULONG len = sizeof(buff); if(ERROR_SUCCESS == key.Open(HKEY_CLASSES_ROOT, strProgID + _T("\\shell\\open"), KEY_READ)) { CString strCommand = ResStr(IDS_OPEN_WITH_MPC); if (ERROR_SUCCESS == key.QueryStringValue(NULL, buff, &len)) f_setContextFiles = (strCommand.CompareNoCase(CString(buff)) == 0); } } // Check if association is for this instance of MPC if (bIsDefault) { CRegKey key; TCHAR buff[_MAX_PATH]; ULONG len = sizeof(buff); bIsDefault = FALSE; if(ERROR_SUCCESS == key.Open(HKEY_CLASSES_ROOT, strProgID + _T("\\shell\\open\\command"), KEY_READ)) { CString strCommand = GetOpenCommand(); if (ERROR_SUCCESS == key.QueryStringValue(NULL, buff, &len)) bIsDefault = (strCommand.CompareNoCase(CString(buff)) == 0); } } return !!bIsDefault; }
bool CPPageFormats::RegisterExt(CString ext, bool fRegister, CString PerceivedType) { CRegKey key; bool bSetValue; CString strProgID = _T("SPlayer") + ext; CString strLabel = _T(""); if(ext == _T(".rar")){ return true; } if(fRegister){ //为保证成功注册清理垃圾 //AfxGetMyApp()->DelRegTree(HKEY_CLASSES_ROOT, ext); AfxGetMyApp()->DelRegTree(HKEY_CLASSES_ROOT, _T("KMPlayer") + ext); AfxGetMyApp()->DelRegTree(HKEY_CLASSES_ROOT, _T("QQPlayer") + ext); AfxGetMyApp()->DelRegTree(HKEY_CLASSES_ROOT, _T("stormplayer") + ext); AfxGetMyApp()->DelRegTree(HKEY_CLASSES_ROOT, _T("RealPlayer") + ext+L".6"); AfxGetMyApp()->DelRegTree(HKEY_CLASSES_ROOT, _T("RealPlayer") + ext+L".10"); AfxGetMyApp()->DelRegTree(HKEY_CLASSES_ROOT, _T("Xmp") + ext); } CString path, fn, cmd; if(!MakeRegParams(ext, path, fn, strLabel, cmd)) return(false); strLabel = GetFileTypeName(ext); if (ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, ext)) return(false); if (!PerceivedType.IsEmpty()) { key.SetStringValue (L"PerceivedType", PerceivedType); } BOOL bIsRAR = (ext.Right(3).MakeLower() == _T("rar")); if (bIsRAR) return true; if(!fRegister && !bIsRAR) { if(fRegister != IsRegistered(ext)) SetFileAssociation (ext, strProgID, fRegister); key.Attach(HKEY_CLASSES_ROOT); key.RecurseDeleteKey(strProgID); return(true); } bSetValue = fRegister || (ERROR_SUCCESS != key.Open(HKEY_CLASSES_ROOT, strProgID + _T("\\shell\\open\\command"), KEY_READ)); // Create ProgID for this file type if(ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID)) return(false); if(ERROR_SUCCESS != key.SetStringValue(NULL, strLabel)) return(false); // Add to playlist option if(f_setContextFiles || bIsRAR) { if(ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID + _T("\\shell\\enqueue"))) return(false); if(ERROR_SUCCESS != key.SetStringValue(NULL, ResStr(IDS_ADD_TO_PLAYLIST))) return(false); if(ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID + _T("\\shell\\enqueue\\command"))) return(false); if(bSetValue && (ERROR_SUCCESS != key.SetStringValue(NULL, GetEnqueueCommand()))) return(false); } else { key.Attach(HKEY_CLASSES_ROOT); key.RecurseDeleteKey(strProgID + _T("\\shell\\enqueue")); } // Play option if(ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID + _T("\\shell\\open"))) return(false); if(f_setContextFiles || bIsRAR) { if(ERROR_SUCCESS != key.SetStringValue(NULL, ResStr(IDS_OPEN_WITH_MPC))) return(false); } else { if(ERROR_SUCCESS != key.SetStringValue(NULL, _T(""))) return(false); } if(ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID + _T("\\shell\\open\\command"))) return(false); if(bSetValue && (ERROR_SUCCESS != key.SetStringValue(NULL, GetOpenCommand()))) return(false); // Play option if(ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID + _T("\\shell\\openewnd"))) return(false); if(f_setContextFiles || bIsRAR) { if(ERROR_SUCCESS != key.SetStringValue(NULL, ResStr(IDS_OPEN_WITH_MPC_IN_NEW_WND))) return(false); } else { if(ERROR_SUCCESS != key.SetStringValue(NULL, _T(""))) return(false); } if(ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID + _T("\\shell\\openewnd\\command"))) return(false); if(bSetValue && (ERROR_SUCCESS != key.SetStringValue(NULL, GetOpenCommand(true)))) return(false); if(ERROR_SUCCESS != key.Create(HKEY_LOCAL_MACHINE, g_strRegisteredKey + _T("\\FileAssociations"))) return(false); if(ERROR_SUCCESS != key.SetStringValue(ext, strProgID)) return(false); if(f_setAssociatedWithIcon && !bIsRAR) { CString AppIcon = GetFileIcon(ext); TCHAR buff[MAX_PATH]; if((AppIcon.IsEmpty()) && (::GetModuleFileName(AfxGetInstanceHandle(), buff, MAX_PATH))) { AppIcon = buff; AppIcon = "\""+AppIcon+"\""; AppIcon += _T(",0"); } if(ERROR_SUCCESS != key.Create(HKEY_CLASSES_ROOT, strProgID + _T("\\DefaultIcon"))) return(false); if(bSetValue && (ERROR_SUCCESS != key.SetStringValue(NULL, AppIcon))) return(false); } else { key.Attach(HKEY_CLASSES_ROOT); key.RecurseDeleteKey(strProgID + _T("\\DefaultIcon")); } if (fRegister && !bIsRAR) SetFileAssociation(ext, strProgID, fRegister); return(true); }
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(); }