Reputation: 17320
I've got a C++ app that I'm porting from Win32 to OSX. I'd like to be able to launch arbitrary files as if the user opened them. This is easy on windows using ShellExecute. How do I accomplish the same thing on the Mac?
Thanks!
Upvotes: 10
Views: 11376
Reputation: 9333
Another suggestion if you're working with cocoa:
[[NSWorkspace sharedWorkspace] openFile:@"pathToFile"];
There are other similar methods in NSWorkspace
as well. For example to open an application or a URL:
[[NSWorkspace sharedWorkspace] launchApplication:@"pathToApplication"];
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"URL"]];
Working through [NSWorkspace sharedWorkspace]
can give you a bit more control than the standard C system()
call.
Edit: Note that you can use Objective-C++ to mix C++ code with Objective-C code and thereby call cocoa methods.
Upvotes: 9
Reputation: 1
You can simply use the system(); function. For example, say you wanted to put your dock into the corner of the screen.
You can simply put:
system(defaults write com.apple.dock pinning -string end);
sleep(1f);
system(killall Dock);
It's that easy. Hope I helped :)
Upvotes: 0
Reputation: 119154
You can call system();
in any C++ application. On OSX, you can use the open command to launch things as if they were clicked on.
From the documentation for open:
The open command opens a file (or a directory or URL), just as if you had double-clicked the file's icon. If no application name is specified, the default application as determined via LaunchServices is used to open the specified files.
All together, it would look like:
string command = "open " + filePath;
system(command.c_str());
Upvotes: 15