如何以编程方式打开特定'.exe'文件

本文关键字:exe 文件 编程 方式打 | 更新日期: 2023-09-27 18:02:35

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

如何以编程方式打开特定'.exe'文件

根据我所做的一点研究,可以通过打开并读取%AppData%'Microsoft'Windows'Recent'AutomaticDestinations

中的文件内容来完成。

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

编辑:第二次看你的帖子:原谅我,教你写一个应用程序来取代windows任务栏。嗯,你的问题似乎有点棘手。以下步骤可能有效:

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

ps: windows 7的api代码包可能也很有用。

你也许可以使用Window Messages来做这件事。你可以使用像spy++这样的工具来发现任务栏是如何构建子窗口的等等。一旦你了解了它是如何工作的,你很可能需要SetFocus并向它发送像WM_MOUSECLICK这样的消息。

如果每个按钮不是一个真正的按钮(只是一个绘制的"虚拟"按钮),你将需要使用一些数学计算出WM_MOUSECLICK的坐标(你可能需要用WM_MOUSEDOWNWM_MOUSEUP进行实验)。请记住,任务栏可以固定在桌面的不同边缘,以及大小为16px的按钮。

如果这听起来像黑客,它是,我记得微软特别说过,他们不会给开发人员这种级别的控制在新的任务栏。

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

我以前在XP中黑过任务栏(自定义开始菜单),所以这应该可以在Windows 7中实现。

您可以使用"Teststack "库。(简单的Nuget)然后使用

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

跳转列表是安全ui的一部分,你可以在列表中添加选项,但显示列表本身必须是用户发起的,就像上下文菜单和鼠标点击一样

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

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

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

这篇文章是几年前的了,但信息仍然很好。