10

我有一个要从 Win32 移植到 OSX 的 C++ 应用程序。我希望能够像用户打开它们一样启动任意文件。这在使用 ShellExecute 的 Windows 上很容易。我如何在 Mac 上完成同样的事情?

谢谢!

4

3 回答 3

15

您可以调用system();任何 C++ 应用程序。在 OSX 上,您可以使用open命令来启动事物,就好像它们被单击一样。

从打开的文档中:

open 命令打开一个文件(或目录或 URL),就像您双击文件的图标一样。如果未指定应用程序名称,则使用通过 LaunchServices 确定的默认应用程序来打开指定的文件。

总之,它看起来像:

string command = "open " + filePath;
system(command.c_str());
于 2009-05-13T18:18:04.957 回答
9

如果你正在使用可可,另一个建议是:

[[NSWorkspace sharedWorkspace] openFile:@"pathToFile"];

中还有其他类似的方法NSWorkspace。例如打开应用程序或 URL:

[[NSWorkspace sharedWorkspace] launchApplication:@"pathToApplication"];
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"URL"]];

与标准 C调用相比,通过工作[NSWorkspace sharedWorkspace]可以为您提供更多控制。system()

编辑:请注意,您可以使用Objective-C++将 C++ 代码与 Objective-C 代码混合,从而调用可可方法。

于 2009-05-13T18:32:30.300 回答
0

您可以简单地使用 system(); 功能。例如,假设您想将扩展坞放在屏幕的一角。

你可以简单地说:

system(defaults write com.apple.dock pinning -string end);
sleep(1f);
system(killall Dock);

就这么容易。希望我有所帮助:)

于 2014-06-18T18:27:49.593 回答