如何防止应用程序在 Windows 7 中被固定?

2024-03-12

我试图阻止用户将我的 .NET 应用程序固定到任务栏。我在上面找到了一些代码老新事物 http://blogs.msdn.com/b/oldnewthing/archive/2011/06/01/10170113.aspx就是这么做的。然而,它是用C++编写的。

#include <shellapi.h>
#include <propsys.h>
#include <propkey.h>

HRESULT MarkWindowAsUnpinnable(HWND hwnd)
{
 IPropertyStore *pps;
 HRESULT hr = SHGetPropertyStoreForWindow(hwnd, IID_PPV_ARGS(&pps));
 if (SUCCEEDED(hr)) {
  PROPVARIANT var;
  var.vt = VT_BOOL;
  var.boolVal = VARIANT_TRUE;
  hr = pps->SetValue(PKEY_AppUserModel_PreventPinning, var);
  pps->Release();
 }
 return hr;
}


BOOL
OnCreate(HWND hwnd, LPCREATESTRUCT lpcs)
{
 MarkWindowAsUnpinnable(hwnd);
 return TRUE;
}

我把它转换成 C# 的运气很差。有人可以帮忙吗?


您可以下载Windows API 代码包 http://archive.msdn.microsoft.com/WindowsAPICodePack/Release/ProjectReleases.aspx?ReleaseId=4906其中包含将帖子中的代码转换为 C# 所需的必要 p/invoke 调用。

要么使用整个库,要么找到您需要的特定调用和定义(搜索它SHGetPropertyStoreForWindow然后是其他依赖项)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何防止应用程序在 Windows 7 中被固定? 的相关文章

随机推荐