Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OSX相当于ShellExecute? 我有一个C++应用程序,我正在从Win32移植到OSX。我希望能够像用户打开文件一样启动任意文件。在windows上使用ShellExecute很容易做到这一点。我如何在Mac上完成同样的事情_C++_Macos_Shellexecute - Fatal编程技术网

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

OSX相当于ShellExecute? 我有一个C++应用程序,我正在从Win32移植到OSX。我希望能够像用户打开文件一样启动任意文件。在windows上使用ShellExecute很容易做到这一点。我如何在Mac上完成同样的事情,c++,macos,shellexecute,C++,Macos,Shellexecute,谢谢 您可以调用system()在任何C++应用程序中。在OSX上,您可以使用命令启动东西,就好像它们被单击一样 从open的文档中: “打开”命令打开一个文件(或目录或URL),就像双击文件的图标一样。如果未指定应用程序名称,则使用通过LaunchServices确定的默认应用程序打开指定的文件 总的来说,它看起来像: string command = "open " + filePath; system(command.c_str()); 如果您正在与cocoa合作,另一个建议是: [[N

谢谢

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

从open的文档中:

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

总的来说,它看起来像:

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

如果您正在与cocoa合作,另一个建议是:

[[NSWorkspace sharedWorkspace] openFile:@"pathToFile"];
NSWorkspace
中还有其他类似的方法。例如,要打开应用程序或URL:

[[NSWorkspace sharedWorkspace] launchApplication:@"pathToApplication"];
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"URL"]];
使用
[NSWorkspace sharedWorkspace]
可以比标准的C
system()
调用提供更多的控制


<>编辑:注意,可以使用C++代码与Objtovi-C代码混合,从而调用COCOA方法。

< P>可以简单地使用Sype();功能。例如,假设你想把你的船坞放在屏幕的一角

你可以简单地说:

system(defaults write com.apple.dock pinning -string end);
sleep(1f);
system(killall Dock);
就这么简单。
希望我能帮上忙:)

我认为windows的等价物是
“开始”+文件路径但在Windows上,如果应用程序已安装并添加到Windows路径,则不需要完整路径。例如:ShellExecute(0,L“打开”,L“Filename.exe”,0,0,SW_SHOW);如何在Mac上实现同样的功能?这是正确的,不过需要在system()参数周围添加引号。