Как я могу выполнить эквивалент shellexecute () в Lazarus для Mac? - PullRequest
7 голосов
/ 26 февраля 2009

Как я могу выполнить эквивалент shellexecute() в Lazarus для Mac?

Ответы [ 5 ]

8 голосов
/ 05 марта 2009

{Вот код для этого. Используйте объект 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;
3 голосов
/ 19 сентября 2011

Если вы хотите использовать ShellExecute для открытия документа с его предпочтительным приложением, то вы можете использовать процедуру OpenDocument из модуля LCLIntf.

Инструмент преобразования Lazarus также использует эту замену для ShellExecute, см. Lazarus wiki . Внутренне он использует open, как упомянуто RobS.

3 голосов
/ 27 февраля 2009

Я не знаю, есть ли в библиотеках Lazarus эта функциональность, но если нет, то вы можете написать условно скомпилированную версию ShellExecute () , используя информацию в Руководстве по программированию Launch Services .

0 голосов
/ 26 апреля 2009

вилка болит на Mac. BSD используют vfork, а не fork.

0 голосов
/ 27 февраля 2009

Я успешно использовал Shell('open ' + Filename) в OS X 10.4 и 10.3, что, кажется, работает довольно хорошо для большинства типов файлов.

Я наткнулся на open в командной строке и теперь пропускаю его в cygwin / linux и т. Д.

...