OSX эквивалент ShellExecute? - PullRequest
       21

OSX эквивалент ShellExecute?

8 голосов
/ 13 мая 2009

У меня есть приложение на C ++, которое я портирую с Win32 на OSX. Я хотел бы иметь возможность запускать произвольные файлы, как если бы пользователь открыл их. Это легко в Windows, используя ShellExecute. Как мне сделать то же самое на Mac?

Спасибо!

Ответы [ 3 ]

14 голосов
/ 13 мая 2009

Вы можете вызвать system(); в любом приложении C ++. В OSX вы можете использовать команду open для запуска вещей, как если бы на них щелкнули.

Из документации по открытию:

Команда open открывает файл (или каталог, или URL), как если бы вы дважды щелкнули значок файла. Если имя приложения не указано, приложение по умолчанию, определенное с помощью LaunchServices, используется для открытия указанных файлов.

Все вместе, это будет выглядеть так:

string command = "open " + filePath;
system(command.c_str());
9 голосов
/ 13 мая 2009

Еще одно предложение, если вы работаете с какао:

[[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 и таким образом вызывать методы какао.

0 голосов
/ 18 июня 2014

Вы можете просто использовать систему (); функция. Например, допустим, что вы хотите поместить док в угол экрана.

Вы можете просто поставить:

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

Это так просто. Надеюсь, я помог:)

...