C# 如何以编程方式打开特定';的JumpList窗口;。exe';文件

C# 如何以编程方式打开特定';的JumpList窗口;。exe';文件,c#,.net,windows-7,C#,.net,Windows 7,我知道如何为我的应用程序构建跳转列表。但现在我想显示特定“.exe”文件的跳转列表。我有一个“.exe”文件的路径,我需要显示此应用程序的跳转列表。当用户在任务栏上的应用程序图标上单击鼠标右键时,将显示JumpList窗口,但我需要以编程方式显示此窗口。跳转列表是安全ui的一部分,您可以向列表中添加选项,但显示列表本身必须由用户启动,就像上下文菜单和鼠标单击一样,可以通过打开并读取%AppData%\Microsoft\Windows\Recent\AutomaticDestinations中文

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

跳转列表是安全ui的一部分,您可以向列表中添加选项,但显示列表本身必须由用户启动,就像上下文菜单和鼠标单击一样,可以通过打开并读取%AppData%\Microsoft\Windows\Recent\AutomaticDestinations中文件的内容来完成

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

编辑:第二次读你的帖子:原谅我,我教你写一个应用程序来替换windows任务栏。嗯,你的问题似乎有点难。这些步骤可能有效:

  • 拍摄桌面截图,找到与图标匹配的部分 您正在寻找的应用程序的名称(可检索) (以编程方式)
  • 从屏幕截图中减去或匹配图像以获得位置 在屏幕上
  • 在屏幕上的该位置调用鼠标右键单击
  • ps:windows 7版可能也很有用。

    您可能可以使用它来完成。您可以使用类似的工具来了解任务栏如何构造其子窗口等。一旦您了解了它的工作原理,您很可能需要向它发送消息,如
    WM_MOUSECLICK

    如果每个按钮不是一个真实的按钮(只是一个绘制的“虚拟”按钮),您需要使用一些数学来计算
    WM_MOUSECLICK
    (您可能需要尝试
    WM_MOUSEDOWN
    WM_MOUSEUP
    )。请记住,任务栏可以固定在桌面的不同边缘,也可以调整为16px的按钮大小

    如果这听起来像是黑客攻击,那就是,我记得微软明确表示,他们不会给开发人员这种级别的新任务栏控制

    您可能会发现获取
    DllImport
    定义很有用


    我以前在XP(自定义开始菜单)中入侵过任务栏,因此在Windows 7下应该可以做到这一点。

    老实说,我没有花太多时间处理跳转列表

    您在代码项目中看到这个示例了吗?里面有很多好信息

    这篇文章已经有几年的历史了,但是信息仍然很好。

    您可以使用库“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();
    
    var desktop=desktop.Instance;
    var taskList=desktop.Get(SearchCriteria.ByClassName(“MSTaskListWClass”);
    var button=taskList.Get(SearchCriteria.ByText(Text));
    按钮。右键单击();
    
    我相信你做不到。但是,您可以获取MRU文件(可能还有任务或自定义目标),并在您自己的ui中向用户显示它们。
    WM\u鼠标单击
    不存在,因此我们必须使用
    WM\u lbuttonown
    WM\u LBUTTONUP