C相当于AppleScript“告诉X打开Y”

时间:2016-01-17 00:56:56

标签: c applescript tell

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

这不一定是花哨的,如果我甚至不等待成功或失败的反应,那就没关系。只需要发送正确的Apple活动。

3 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

OP在这里为自己创造了一个棒,除了CoreFoundation以外,大多数特定于OS X的C API现在都是遗留/弃用的。曾经可以称之为LaunchServices&#39; LSOpenApplication(),但在10.10中被弃用了。

如果NSWorkspace不是一个选项,请通过fork()execv()使用open,这样可以直接传递参数。

答案 2 :(得分:0)

感谢有用的想法,他们确实让我指出了正确的方向。这些答案的合成对我来说似乎很有效,代码假定路径和文件名是可变的:

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

getwd(wdname);
sprintf(obuf, "open %s/%s", wdname, filename);
system(obuf);