我正在将一款C++应用从Win32移植到OSX,想要能够像用户打开文件一样启动任意文件。在Windows上使用ShellExecute非常简单,那么在Mac上如何实现相同的功能呢?
谢谢!
我正在将一款C++应用从Win32移植到OSX,想要能够像用户打开文件一样启动任意文件。在Windows上使用ShellExecute非常简单,那么在Mac上如何实现相同的功能呢?
谢谢!
在任何C++应用程序中,您都可以调用system();
。在OSX上,您可以使用open命令来启动东西,就像单击它们一样。
根据 open 的说明文档:
open 命令打开一个文件(或目录或 URL),就像您双击文件图标一样。如果未指定应用程序名称,则使用通过 LaunchServices 确定的默认应用程序来打开指定的文件。
总体而言,它看起来像这样:
string command = "open " + filePath;
system(command.c_str());
[[NSWorkspace sharedWorkspace] openFile:@"pathToFile"];
NSWorkspace
中还有其他类似的方法。例如,打开应用程序或URL:
[[NSWorkspace sharedWorkspace] launchApplication:@"pathToApplication"];
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"URL"]];
[NSWorkspace sharedWorkspace]
,您可以比标准的C system()
调用更加控制。你可以简单地使用system()函数。例如,假设你想把你的Dock放在屏幕的角落。
你可以简单地输入:
system(defaults write com.apple.dock pinning -string end);
sleep(1f);
system(killall Dock);
就是这么简单。 希望我有所帮助 :)
"start " + filePath;
。 - MSalters