【问题标题】:OS X application that can run shell commands可以运行 shell 命令的 OS X 应用程序
【发布时间】:2014-10-10 14:40:10
【问题描述】:

我尝试在Apple.StackExchange.com 上问这个问题,但他们将我重定向回这里。

我用TextEdit 创建了一个自定义file association 并让它工作。我现在需要构建一个应用程序,它使用我的自定义 file association 并运行 shell commands 来打开非专有应用程序(如 TextEdit、VLC 等)。此应用程序将从网络下载。

我怎样才能实现所有这些?它可以是任何语言,但最好是Objective-C

【问题讨论】:

  • 你检查过open <your_cusom_assosiated_file> shell 命令吗? developer.apple.com/library/mac/documentation/Darwin/Reference/…
  • @deimus 是的,该命令完美运行。我需要构建一个可以运行该命令的应用程序。我找不到 Cocoa 应用程序运行这样的 shell 命令的方法。应用程序需要保持打开状态,直到用户关闭它,因为我还将执行其他逻辑。
  • 添加答案,检查那里
  • 我认为 SO 不适合问这个广泛的问题——我的意思是:您希望我们为您编写应用程序吗? ;)
  • @Daij-Djan 您对问题的模糊性是正确的。这就是为什么我先在 Apple SE 上问它,但他们说来这里。

标签: objective-c macos shell file-association


【解决方案1】:

似乎有更好的方法来做到这一点

[[NSWorkspace sharedWorkspace] openFile:@"<FULL_PATH_TO_YOUR_ASSOSIATED_FILE>"];

documentationopenFile

使用关联的默认应用打开指定的文件 及其类型。


不那么优雅的方法如下:

检查系统上open 命令的位置,例如whereis open,并使用找到的位置替换下面代码中的可执行文件

NSTask *task = [[NSTask alloc] init];
[task setLaunchPath:@"<FULL_PATH_TO_OPEN_COMMAND>"];
[task setArguments:@[ @"<FULL_PATH_TO_YOUR_ASSOSIATED_FILE>"]];
[task launch];

【讨论】:

  • 任务更加优雅,因为应用程序可以轻松监控它/在它处于活动状态时保持活动状态 - 只要脚本正在运行,操作就希望继续运行
  • 我可以使用 NSTask 运行我的 shell 脚本,然后我使用 NSWorkspace 来监视正在运行的应用程序。谢谢!
猜你喜欢
  • 1970-01-01
  • 2017-03-28
  • 2016-01-18
  • 2014-11-28
  • 2018-03-10
  • 1970-01-01
  • 2015-05-01
  • 2010-11-21
  • 1970-01-01
相关资源
最近更新 更多