OSX相当于ShellExecute?

时间:2009-05-13 18:15:53

标签: c++ macos shellexecute

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

谢谢!

3 个答案:

答案 0 :(得分:14)

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

来自open的文档:

  

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

总之,它看起来像:

string command = "open " + filePath;
system(command.c_str());

答案 1 :(得分:9)

如果你正在使用cocoa,还有另一个建议:

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

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

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

通过[NSWorkspace sharedWorkspace]工作可以比标准C system()调用更多的控制权。

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

答案 2 :(得分:0)

你可以简单地使用system();功能。例如,假设您想将底座放在屏幕的角落。

你可以简单地说:

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

这很容易。 希望我能帮助:)。