![欺骗任务栏,让其认为单独的启动程序与其启动的程序相同?](https://linux22.com/image/1484637/%E6%AC%BA%E9%AA%97%E4%BB%BB%E5%8A%A1%E6%A0%8F%EF%BC%8C%E8%AE%A9%E5%85%B6%E8%AE%A4%E4%B8%BA%E5%8D%95%E7%8B%AC%E7%9A%84%E5%90%AF%E5%8A%A8%E7%A8%8B%E5%BA%8F%E4%B8%8E%E5%85%B6%E5%90%AF%E5%8A%A8%E7%9A%84%E7%A8%8B%E5%BA%8F%E7%9B%B8%E5%90%8C%EF%BC%9F.png)
我使用的程序(不是我开发或维护的)使用功能区。功能区组织得不够好,但幸运的是,通过编辑程序安装文件夹中的ribbon.xml文件,我可以对其进行调整,使其更易于使用(我已经获得了软件开发人员的批准可以对其进行调整)。
不幸的是,程序更新的方式有点奇怪。安装时,它会创建一个名为“version-versionGUID”的文件夹。更新时,它会删除当前安装并将其替换为名为“version-newversionGUID”的文件夹。这给我带来了两个问题:1) 我无法创建程序的永久快捷方式,因为每次程序更新时其文件路径都会发生变化;2) 每次程序更新时,我的ribbon.xml更改都会被覆盖。
为了减少麻烦,我创建了一个 VBS 脚本,用于搜索创建 version-versionGUID 文件夹的目录,一旦找到程序的安装文件夹,我就可以启动可执行文件。问题 1 解决了——运行脚本将始终启动程序的最新版本。不过,在执行此操作之前,脚本会删除程序目录中的ribbon.xml文件,并克隆一个经过修改的版本,其中包含我想要的编辑。问题 2 解决了——我将启动 wscript.exe“launcher.vbs”的快捷方式固定到任务栏,将其图标更改为程序的图标,然后一切都好了,对吧?
我想就此打住,但有一个小问题。当程序运行时,它不会像通常固定的程序那样接管固定的任务栏图标,而是会创建一个新的任务栏项目,现在我在任务栏上有两个项目(启动器图标和程序),而通常我只有程序。显然,这是因为启动器实际上不是程序,所以它当然不会被接管。不过,我想欺骗 Windows,让它认为这个启动器就是程序,这样它就会被接管。
所以,我的问题有两个:
1)有什么方法可以欺骗/强制 Windows 让程序接管任务栏中的启动器图标,然后在程序关闭时恢复启动器?
2)如果没有,有没有办法控制新程序打开时在任务栏上的位置(我想将其放在启动器旁边),在程序运行时禁用任务栏中的启动器图标,然后在程序关闭时重新启用启动器,所有这些都无需重新启动 explorer.exe?
对于 1 和 2,我都很乐意尝试不使用 VBScript——使用它的唯一原因是因为它易于使用并且结果很轻量。事实上,我更愿意尝试不使用 VBScript,因为据我所知,它的功能不够强大,无法在我运行启动器时实现自动更新,这样我就不必手动更新程序了。