void Initialize() { if (base::win::get_version() < base::win::VERSION_WIN7) { return ; } const wchar_t* currentAppID = 0; HRESULT hr = windows7::GetCurrentProcessExplicitAppUserModelID((wchar_t**)¤tAppID); if (FAILED(hr) || !currentAppID) { currentAppID = getCurrentAppID(); windows7::SetCurrentProcessExplicitAppUserModelID(currentAppID); } JumpList jumpList; jumpList.SetAppID(currentAppID); if (jumpList.InitializeList()) { fs::path ydweDirectory = base::path::get(base::path::DIR_MODULE).remove_filename().remove_filename(); jumpList.AddTaskSeparator(); jumpList.AddTask(L"YDWEÅäÖÃ", [&](CComPtr<IShellLinkW>& shellLinkPtr) { shellLinkPtr->SetPath((ydweDirectory / L"bin" / L"YDWEConfig.exe").c_str()); shellLinkPtr->SetDescription(L"´ò¿ªYDWEÅäÖóÌÐò¡£"); shellLinkPtr->SetIconLocation((ydweDirectory / L"bin" / L"logo.ico").c_str(), 0); }); } }
bool JumpListAddRecentTask(JumpList& jumpList, fs::path const& ydweDirectory, fs::path const& filePath) { HRESULT hr = jumpList.AddTask(filePath.filename().c_str(), [&](CComPtr<IShellLinkW>& shellLinkPtr) { shellLinkPtr->SetPath((ydweDirectory / L"YDWE.exe").c_str()); shellLinkPtr->SetArguments((L" -loadfile \"" + filePath.wstring() + L"\"").c_str()); shellLinkPtr->SetDescription(filePath.c_str()); shellLinkPtr->SetIconLocation((ydweDirectory / L"bin" / L"logo.ico").c_str(), 0); }); return SUCCEEDED(hr); }