操作任务栏右键单击应用程序菜单

时间:2013-04-22 09:31:04

标签: c# wpf

我需要从应用程序的任务栏上下文菜单中删除应用程序启动和“将此应用程序固定到任务栏”。原因是应用程序无法独立启动,必须​​使用其他应用程序的信息提供。

有谁知道怎么做?

2 个答案:

答案 0 :(得分:0)

根据this post,您可以使用Windows API Code Pack,但所需的类是内部的。 OP表示他们复制了50k行代码以使其正常工作。我不确定自那篇文章以来它是否有所改进,但这是我刚才想到的解决方法。由于您只能将EXE文件(以及根据注释的快捷方式)固定到任务栏,因此您可以将应用程序重命名为非exe扩展(大多数非exe扩展都无法固定)。

如果您想从其他应用中调用它,请将其重命名为.exe,启动它,然后重新将其重命名。例如:

Process p = new Process();
//fake extension so it can't be drag/dropped to taskbar
string fakeExtensionName = @"C:\MyFile\myProgram.test";
//what it's actually called
string exeExtensionName = @"C:\MyFile\myProgram.exe";
//rename the fake one to the real one
File.Move(fakeExtensionName, exeExtensionName);
p.StartInfo.FileName = exeExtensionName;
//launch the real one
p.Start();
//rename it back to the fake extension
File.Move(exeExtensionName, fakeExtensionName);

任何人都可以将它重命名为exe,如果他们真的想要,那么你的程序应该假设用户可以直接启动它并处理那个场景,但是任何文件都可以通过将其重命名为exe来固定到任务栏,所以这里有没有保护。

答案 1 :(得分:0)

好的,我在这里找到了一个丑陋而简单的解决方案https://stackoverflow.com/a/3872503/1323570

注册表HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileAssociation \ AddRemoveNames包含一些可执行文件中可能不存在的单词,如果可以进行固定。

您还可以在此处阅读更多内容:http://www.west-wind.com/weblog/posts/2009/Oct/08/Application-that-wont-Pin-to-Taskbar-in-Windows-7

编辑:

找到正确的方法:

添加密钥:

HKEY_CLASSES_ROOT \应用程序\ Example.exe \ NoStartPage

参考:http://msdn.microsoft.com/en-us/library/windows/desktop/hh127439(v=vs.85).aspx