有没有人有一个 C 库函数,它相当于 AppleScript“告诉应用程序 X 打开 Y”?我没有使用可可,只是普通的旧 C,理想情况下,我希望能够从没有 GUI 界面的命令行应用程序中执行此操作。
这不必花哨,如果我什至不等待成功或失败的响应就可以了。只需要发送正确的 Apple 事件。
有没有人有一个 C 库函数,它相当于 AppleScript“告诉应用程序 X 打开 Y”?我没有使用可可,只是普通的旧 C,理想情况下,我希望能够从没有 GUI 界面的命令行应用程序中执行此操作。
这不必花哨,如果我什至不等待成功或失败的响应就可以了。只需要发送正确的 Apple 事件。
OP 有点为他自己的背部创造了一根棍子,因为除了 CoreFoundation 之外,大多数 OS X 特定的 C API 现在都是遗留/弃用的。以前您可以调用 LaunchServices' LSOpenApplication()
,但在 10.10 中已弃用。
如果NSWorkspace
不是一个选项,则使用open
via fork()
and execv()
,它允许直接传递参数。
感谢您提供有用的想法,他们真的让我指出了正确的方向。这是对我来说似乎效果很好的这些答案的综合,假设路径和文件名将是可变的代码:
char wdname[1000], obuf[1000];
const char* filename = "WavySwirl.stl";
getwd(wdname);
sprintf(obuf, "open %s/%s", wdname, filename);
system(obuf);
我认为到目前为止最简单的解决方案是向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;
}