【问题标题】:How to grab command line arguments when application is reopen on Mac在 Mac 上重新打开应用程序时如何获取命令行参数
【发布时间】:2013-04-06 16:19:28
【问题描述】:

我必须在 Mac OS X 上编写一个应用程序,我想用带有两个参数的命令行打开它。 这很简单。我使用[[NSProcessInfo processInfo] arguments] 来获取论点。但是当我重新打开应用程序时,我需要抓住新的论据。怎么做? ProcessInfo 给了我第一次写的论点。 要清楚,我这样做: open myapp.app --args -url1 http://apple.com -url2 /Desktop 所以我在 ProcessInfo 中有两个参数:url1 和 url2。

现在我想用另一个新参数重新打开这个应用程序(应用程序仍在后台运行): open myapp.app --args -url1 http://somethingelse.com -url2 /Desktop/NewLibrary 但是当我使用 NSProcessInfo 时,我有较旧的参数(http://apple.com/Desktop)。

我怎样才能抓住新的论点?

对不起我的英语:(

【问题讨论】:

  • OS X 只允许您一次打开一个应用程序。如果它已经打开,open 命令只是将它放在前面,而参数将被忽略。
  • 这个问题可以用其他方法解决吗?
  • 使用 OSA 添加向应用程序发送参数的方法,类似于向浏览器发送 URL 的方式。
  • 你必须写第二个'open'

标签: objective-c macos cocoa command-line-arguments


【解决方案1】:

默认情况下,open(1) 命令行工具将切换到您程序的现有实例。由于这不会调用程序的主入口点,因此参数将被忽略。它们在程序启动时设置,如果您想将其与其他命令行参数一起使用,您必须启动程序的新实例。

使用open -n 启动程序的新实例。即使已经存在另一个实例,这也会启动一个新实例。

【讨论】:

    猜你喜欢
    • 2011-02-24
    • 2012-05-05
    • 2016-10-09
    • 1970-01-01
    • 1970-01-01
    • 2018-12-01
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    相关资源
    最近更新 更多