Как я могу выполнить эквивалент shellexecute() в Lazarus для Mac?
shellexecute()
{Вот код для этого. Используйте объект TProcess! }
uses Process; ... procedure DoProcess; Var Proc : TProcess; Begin Proc := TProcess.Create(nil); try Proc.CommandLine := '/Applications/MyApp.app'; PRoc.Options := Proc.Options + [poWaitOnExit]; Proc.CommandLine := Proc.CommandLine + ' -someparam'; PRoc.Execute; finally Proc.free; end; End;
Если вы хотите использовать ShellExecute для открытия документа с его предпочтительным приложением, то вы можете использовать процедуру OpenDocument из модуля LCLIntf.
Инструмент преобразования Lazarus также использует эту замену для ShellExecute, см. Lazarus wiki . Внутренне он использует open, как упомянуто RobS.
Я не знаю, есть ли в библиотеках Lazarus эта функциональность, но если нет, то вы можете написать условно скомпилированную версию ShellExecute () , используя информацию в Руководстве по программированию Launch Services .
вилка болит на Mac. BSD используют vfork, а не fork.
Я успешно использовал Shell('open ' + Filename) в OS X 10.4 и 10.3, что, кажется, работает довольно хорошо для большинства типов файлов.
Shell('open ' + Filename)
Я наткнулся на open в командной строке и теперь пропускаю его в cygwin / linux и т. Д.
open