1

我需要从应用程序的任务栏上下文菜单中删除应用程序启动和“将此应用程序固定到任务栏”。原因是应用程序不能独立启动,它必须从另一个应用程序中获取信息。

有谁知道怎么做?

4

2 回答 2

0

根据这篇文章,您可以使用Windows API 代码包,但所需的类是内部的。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 来固定到任务栏,因此周围没有保护那。

于 2013-04-22T11:42:37.473 回答
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\Applications\Example.exe\NoStartPage

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

于 2013-04-22T17:09:01.993 回答