Windows 7 设置其他进程的应用程序用户模型ID

Windows 7 设置其他进程的应用程序用户模型ID,windows-7,taskbar,Windows 7,Taskbar,我有一个启动应用程序,可以启动另一个应用程序。为了让另一个应用程序能够很好地使用Windows7的任务栏,我必须设置 通常,进程必须通过调用SetCurrentProcessExplicitAppUserModelID()为自己设置此id,但在这种特定情况下,我无法控制其他应用程序的启动代码,因此我必须在外部设置此id,最好使用某种ShellExecute将id传递给应用程序 这可能吗?如果Windows不调用SetCurrentProcessExpliciticTappUserModelId,

我有一个启动应用程序,可以启动另一个应用程序。为了让另一个应用程序能够很好地使用Windows7的任务栏,我必须设置

通常,进程必须通过调用SetCurrentProcessExplicitAppUserModelID()为自己设置此id,但在这种特定情况下,我无法控制其他应用程序的启动代码,因此我必须在外部设置此id,最好使用某种ShellExecute将id传递给应用程序


这可能吗?

如果Windows不调用SetCurrentProcessExpliciticTappUserModelId,它将自动为进程生成一个id,这对于最近的文件跳转列表部分应该足够了

如果你出于任何原因真的想为第三方应用程序设置一个特定的id,我会尝试其中的一个(我没有尝试过这些建议中的任何一个)

  • 在应用程序窗口上使用SHGetPropertyStoreForWindow(我从未尝试过这样设置id,但我知道您可以通过这种方式读取另一个进程的id)
  • 创建使用特定id启动应用程序的临时快捷方式
  • 注入到进程中并调用SetCurrentProcessExplicitAppUserModelID

为什么其他应用程序需要显式id?第二个选项听起来很合理!好的,刚刚尝试过,第二种选择也有它的缺点。问题是:我有一个Java应用程序,它是从一个启动器启动的,用于检查更新。Java应用程序是用Exe4J编译的,Exe4J本身会显示一个splashscreen,从而在任务栏中显示一个图标。在显示启动屏幕时,我在任务栏上有两个图标,因为Java应用程序没有从父进程继承应用程序id,而且从Java应用程序本身继承应用程序id已经太晚了,因为启动屏幕是在加载jvm之前故意显示的。@Daniel:好吧,也许你可以要求Exe4J人员添加应用程序模型id支持,或者编写你自己的启动器。我已经问过他们了,但我仍然不知道他们什么时候会实现我的要求。也许我应该买一个支持包,但我现在不想要这个。。。如果我仍然可以以不同的方式实现这一点,则不会:)。