【问题标题】:Modify exe to launch with command line arguments without creating shortcut修改 exe 以使用命令行参数启动而不创建快捷方式
【发布时间】:2015-03-09 01:56:59
【问题描述】:

我正在尝试使用winapi方法来修改一个exe。

我也不知道如何手工完成,如果有人可以与我分享,那将是一个好的开始,然后我可以尝试以编程方式实现它。

基本上有这个exe:“C:\Program Files (x86)\Mozilla Firefox\firefox.exe”。 我将其复制并粘贴到:“C:\Program Files (x86)\Mozilla Firefox\SecondFirefox.exe”

我不想让它成为快捷方式,因为我在任务栏上遇到了一些奇怪的分离问题。

我想使用默认命令行参数-P "Dev" -no-remote 启动“SecondFirefox.exe”,这可能吗?

谢谢

【问题讨论】:

  • 不是直接的,但是你可以创建一个.bat文件来启动它,然后把参数放在那里。
  • 感谢 Remy,我这样做了,并且蝙蝠上的图标不同,但是当 Firefox 启动时,它不尊重我转换为 exe 的新蝙蝠的图标。它将采用原始 exe 的图标。我什至使用资源黑客来更改原始文件名,但它没有被占用。 :(
  • 您希望两个 exe 文件分别启动不同的用户,并且它们的图标不会在任务栏上组合在一起。对吗?
  • 谢谢@ameen 是的,我想试试。我想它会解决我的问题。关于我的问题的详细信息:现在我有两个快捷方式,都指向“../firefox.exe”,但第二个快捷方式也有命令行参数../firefox.exe -P "Dev" -no-remote,这会导致第二个 firefox 实例启动。但是启动的firefox没有使用任务栏中的快捷方式图标,它们使用的是快捷方式指向的exe图标。
  • 这是完全正常的行为。快捷方式不是正在运行的,exe是运行的,任务栏使用的是正在运行的进程的图标。

标签: windows winapi firefox


【解决方案1】:

这不会回答你关于如何做的问题,但它应该给你一个关于正在发生的事情的线索

Windows 使用所谓的Application ID,它是windowsprocessesshortcuts 的属性。 使用这个ID Windows 能够确定任务栏按钮如何与窗口和应用程序关联,以及系统如何决定一个应用程序是否需要两个任务栏按钮用于不同的窗口,或者多个应用程序是否需要共享一个任务栏按钮。

但是这些IDs可以由应用程序自定义,这意味着应用程序仍然可以指定两个窗口是否共享相同的图标

我创建了一个小的可执行文件,然后复制它并一起启动它们,结果是每个都有自己的图标。

但当我复制可执行文件时,firefox 并非如此

firefox 很可能正在将所有正在运行的实例的Application IDs 更改为一个应用程序 ID,这就是所有firefox 任务栏图标合并的原因。 话虽如此,即使您尝试自己构建它,也不容易做到。

我不确定,因为我不想阅读源代码,但您仍然可以检查是否正确。

查看this link 了解有关任务栏 API 的更多信息

【讨论】:

【解决方案2】:

制作可执行文件的副本似乎是个坏主意。为什么你应该有两份相同的东西。

我会做一个启动程序。一个非常简单的程序,它只是使用修改后的命令行启动原始可执行文件。

【讨论】:

  • 感谢大卫的回复。因为如果您使用命令行参数-no-remote -P "<name_of_profile_here>" 启动Firefox,您可以并行运行多个配置文件github.com/Mozilla-Student-Projects/Projects-Tracker/issues/…。现在我的任务栏上有一堆 Firefox 图标,但它们都有相同的图标,我试图让它在每个配置文件中使用不同的图标。我尝试了那个启动器,我制作了一个 bat 文件并将其放入 @echo off start "" "firefox.exe" 中,将 bat 编译为 exe 并给它图标。它启动它在它旁边弹出打开Firefox,奇怪。
  • 我真的不明白那个评论。制作一个简单的程序,调用 CreateProcess 传递你喜欢的任何命令行参数。
  • 抱歉,我错过了您的回复。我评论了上面的主题帖子,它可能会有所帮助:[#comment44174230_27882708](#comment44174230_27882708)
  • 您接受的答案并没有回答您提出的问题。
猜你喜欢
  • 2012-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-06
  • 1970-01-01
相关资源
最近更新 更多