我认为这就是所谓的:
我希望能够将这样的东西添加到我的程序中。例如打开按钮和其他将在应用程序中执行方法的按钮。顺便说一句,这是在 C# 中。
我确实查看了 Windows 7 API 代码包,但它.. 没有按我想要的方式工作。它不会让我像我想要的那样在我的应用程序中执行方法。它只是让您打开其他应用程序。
这样的事情可能吗?
我认为是您不了解 JumpLists 的工作原理。“它只是让你打开其他应用程序”正是它的作用,没有别的。那是 Windows 7 功能,而不是 API 代码包限制。关键点是事实,你的应用程序没有运行,那么它应该在哪里执行你的方法?正确的实现是让您的 JumpList 使用正确的参数运行您的应用程序,然后在您的应用程序 Main 方法中根据这些参数调用不同的方法。不要忘记,即使是窗口应用程序也有输入参数,就像控制台应用程序一样。
如果您查看 Outlook 和 Messenger,它们会调用应用程序中的其他命令,因此您知道这是可能的。但正如@Euphoric 所说,跳转列表的架构非常简单——选择一个目的地(例如文件名或URL)会导致Windows 启动另一个应用程序实例并将该目的地作为命令行参数传递。选择一个任务会导致 Windows 启动该任务,该任务需要是其他一些 exe。
如何解决这个看似悖论?另一个 exe 是与主应用程序通信的辅助 exe。这方面的例子供不应求,但我正在为 11 月初的演讲做一个演示,完成后我会在博客上发布。也许这个架构指针会让你开始。
将 URL 分配给跳转列表项并使用 HTTP 侦听器在您的应用程序上调用方法。像这个使用 C# HttpListener 的 URL 映射
此外,您可以走一条尴尬的路线并使用共享互斥锁使您的应用程序仅成为单个实例,并通过命名管道转发命令行参数。但是 http 监听器更好;)