【问题标题】:Manipulating taskbar right click application menu操作任务栏右键单击应用程序菜单
【发布时间】:2013-04-22 09:31:03
【问题描述】:

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

有人知道怎么做吗?

【问题讨论】:

    标签: c# wpf taskbar jump-list


    【解决方案1】:

    根据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 来固定到任务栏,所以有周围没有保护。

    【讨论】:

    • 今天我了解到,确定文件是否可以固定到任务栏上的唯一因素是它是否具有.exe 扩展名。
    • @BoltClock - 我可能不正确地说它是唯一的扩展,但肯定是少数扩展之一。这就是为什么一个巧妙的技巧是将您想要固定为 exe 的任何文件重命名,然后右键单击它,编辑属性,并将目标路径设置回原始文件格式;)
    • 应用程序运行时是否可以重命名文件?
    • 您可以将所有内容固定到任务栏,请参阅C:\Users\:Username\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar
    • @AndreasJohansson - 是的,应该是这样,但如果这可能导致您的应用程序出现问题,那么您可以在以后知道您的应用程序已关闭时重命名它。我只是立即将其重命名为示例。
    【解决方案2】:

    好的,我在这里找到了一个丑陋但简单的解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多