我正在开发 ac# 桌面应用程序。
我们需要根据条件数量取消固定我们的应用程序磁贴。这可能在应用程序生命周期的任何时候发生,而不仅仅是在安装期间。
我看到了这个关于如何在 CPP 中取消固定磁贴的问题。我也尝试在 C# 中这样做,但没有成功。
有什么帮助吗?
更新:
我能够编写将 AppUserModel_StartPinOption 设置为 APPUSERMODEL_STARTPINOPTION_NOPINONINSTALL 的 C# 代码,但它没有帮助:(
这是代码:
private static void InstallShortcut(string linkPath)
{
// Find the path to the current executable
// String exePath = Process.GetCurrentProcess().MainModule.FileName; //Path to the current exe file that is running. C:\\...
IShellLinkW newShortcut = (IShellLinkW)new CShellLink();
// Create a shortcut to the exe
ErrorHelper.VerifySucceeded(newShortcut.SetPath(targetPath));
ErrorHelper.VerifySucceeded(newShortcut.SetArguments(""));
// Open the shortcut property store, set the AppUserModelId property
IPropertyStore newShortcutProperties = (IPropertyStore)newShortcut;
var APPUSERMODEL_STARTPINOPTION_NOPINONINSTALL = new PropVariant(0);
var StartPinOption = new PropertyKey(new Guid("{9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}"), 12);
ErrorHelper.VerifySucceeded(newShortcutProperties.SetValue(StartPinOption, APPUSERMODEL_STARTPINOPTION_NOPINONINSTALL));
ErrorHelper.VerifySucceeded(newShortcutProperties.Commit());
// Commit the shortcut to disk
IPersistFile newShortcutSave = (IPersistFile)newShortcut;
ErrorHelper.VerifySucceeded(newShortcutSave.Save(linkPath, true));
}
我尝试了两种方法:删除磁贴然后重新创建它,并更改现有磁贴的参数,但没有任何效果,磁贴保持固定在开始菜单上。