0

有没有人有一个 C 库函数,它相当于 AppleScript“告诉应用程序 X 打开 Y”?我没有使用可可,只是普通的旧 C,理想情况下,我希望能够从没有 GUI 界面的命令行应用程序中执行此操作。

这不必花哨,如果我什至不等待成功或失败的响应就可以了。只需要发送正确的 Apple 事件。

4

3 回答 3

0

OP 有点为他自己的背部创造了一根棍子,因为除了 CoreFoundation 之外,大多数 OS X 特定的 C API 现在都是遗留/弃用的。以前您可以调用 LaunchServices' LSOpenApplication(),但在 10.10 中已弃用。

如果NSWorkspace不是一个选项,则使用openvia fork()and execv(),它允许直接传递参数。

于 2016-01-17T19:00:34.867 回答
0

感谢您提供有用的想法,他们真的让我指出了正确的方向。这是对我来说似乎效果很好的这些答案的综合,假设路径和文件名将是可变的代码:

char wdname[1000], obuf[1000];
const char* filename = "WavySwirl.stl";

getwd(wdname);
sprintf(obuf, "open %s/%s", wdname, filename);
system(obuf);
于 2016-01-18T16:15:28.963 回答
0

我认为到目前为止最简单的解决方案是向osascript命令行实用程序发出系统调用。

#include <stdio.h>
#include <stdlib.h>

int main(void) {
  system("osascript -e 'tell application \"X\" to open POSIX file \"/path/to/Y\"'");
  return 0;
}
于 2016-01-17T01:36:59.967 回答