【问题标题】:How to programmatically open JumpList window for specific '.exe' file?如何以编程方式打开特定“.exe”文件的 JumpList 窗口?
【发布时间】:2011-07-13 13:45:15
【问题描述】:

我知道如何为我的应用程序构建 JumpList。但现在我想显示特定“.exe”文件的 JumpList。我有一个“.exe”文件的路径,我需要为这个应用程序显示 JumpList。当用户在任务栏上的应用程序图标上单击鼠标右键时会显示 JumpList 窗口,但我需要以编程方式显示此窗口。

【问题讨论】:

  • 我不相信你可以。但是,您可以获取 MRU 文件(可能还有任务或自定义目标)并在您自己的 ui 中将它们显示给用户。

标签: c# .net windows-7


【解决方案1】:

从我所做的小研究来看,可以通过打开并读取 %AppData%\Microsoft\Windows\Recent\AutomaticDestinations 中的文件内容来完成

那里的文件包含跳转列表文件的扩展名,通过阅读这些文件,您可以通过检查重复出现的文件扩展名找到包含您想要的应用程序的跳转列表的文件。通过了解您要检索的应用程序的文件扩展名,您可以找到它的跳转列表文件。当然,您可以使用注册表找到应用程序的文件扩展名。

编辑:刚刚第二次阅读您的帖子:原谅我,教您编写一个应用程序来替换 Windows 任务栏。好吧,你的问题似乎有点棘手。这些步骤可能有效:

  1. 截取桌面,找到与图标匹配的部分 您正在寻找的应用程序(可检索 以编程方式)
  2. 从您的屏幕截图中减去或匹配图像以获取位置 在屏幕上
  3. 在屏幕上的该位置调用鼠标右键单击。

ps:Windows 7 的api code pack 也可能很有用。

【讨论】:

    【解决方案2】:

    您也许可以使用Window Messages 来做到这一点。您可以使用Spy++ 之类的工具来了解任务栏如何构建其子窗口等。一旦您了解了它的工作原理,您很可能需要SetFocus 并向其发送WM_MOUSECLICK 之类的消息。

    如果每个按钮都不是真正的按钮(只是一个绘制的“虚拟”按钮),您将需要使用一些数学计算来计算 WM_MOUSECLICK 的坐标(您可能需要尝试使用 WM_MOUSEDOWNWM_MOUSEUP)。请记住,任务栏可以锚定到桌面的不同边缘,也可以调整为 16 像素的按钮。

    如果这听起来像是 hack,我记得微软明确表示他们不会通过新任务栏为开发人员提供这种级别的控制。

    您可能会发现 PInvoke Wiki 对于获取 DllImport 定义很有用。

    我之前在 XP(自定义开始菜单)中破解了任务栏,所以这在 Windows 7 下应该是可能的。

    【讨论】:

    • WM_MOUSECLICK 不存在,我们必须使用 WM_LBUTTONDOWNWM_LBUTTONUP
    【解决方案3】:

    您可以使用库“Teststack.White”(简单的 Nuget),然后使用它

    var desktop = Desktop.Instance;
    var taskList = desktop.Get<ToolStrip>(SearchCriteria.ByClassName("MSTaskListWClass"));
    var button = taskList.Get<Button>(SearchCriteria.ByText(Text));
    button.RightClick();
    

    【讨论】:

      【解决方案4】:

      跳转列表是安全用户界面的一部分,您可以向列表添加选项,但显示列表本身必须由用户启动,就像上下文菜单和鼠标点击一样

      【讨论】:

        【解决方案5】:

        说实话,我没有花太多时间在 JumpLists 上。

        您在 Code Project 上看到过这个例子吗?里面有很多很好的信息。

        http://www.codeproject.com/KB/WPF/MefFX.aspx

        文章有几年了,但资料还是不错的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-03-04
          • 1970-01-01
          • 2019-11-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-06-29
          相关资源
          最近更新 更多