阻止将窗口Pin To Taskbar(移除菜单)
某些原因,不允许用户将窗口Pin To Taskbar,可以通过以下代码实现
void PreventPinning(HWND hWnd) { HMODULE hShell = ::LoadLibraryW(L"Shell32.dll"); if (hShell == NULL) return; typedef HRESULT(__stdcall *SHGETPROP)(HWND hwnd, REFIID riid, void** ppv); SHGETPROP pfGetPropertyStoreForWindow = reinterpret_cast<SHGETPROP> (::GetProcAddress(hShell, "SHGetPropertyStoreForWindow")); if (pfGetPropertyStoreForWindow) { CComQIPtr<IPropertyStore> pps; HRESULT hr = pfGetPropertyStoreForWindow(hWnd, IID_PPV_ARGS(&pps)); // 暂不开放,禁止pin到任务栏 PROPVARIANT propVar = { 0 }; hr = ::InitPropVariantFromBoolean(TRUE, &propVar); if (SUCCEEDED(hr)) { hr = pps->SetValue(PKEY_AppUserModel_PreventPinning, propVar); PropVariantClear(&propVar); } } pfGetPropertyStoreForWindow = NULL; ::FreeLibrary(hShell); }