如何在 Mac 的 Lazarus 中执行与 shellexecute() 等效的操作?

发布于 2024-07-15 00:36:49 字数 64 浏览 6 评论 0原文

如何在 Mac 版 Lazarus 中执行与 shellexecute() 等效的操作?

How can I perform the equivalent of shellexecute() in Lazarus for a Mac?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

却一份温柔 2024-07-22 00:36:50

我不知道 Lazarus 库是否已经包含此功能,但如果没有,您可以使用 启动服务编程指南

I don't know whether Lazarus libraries do already have this functionality wrapped, but if not you could write a conditionally compiled version of ShellExecute() using the info in the Launch Services Programming Guide.

旧话新听 2024-07-22 00:36:50

我已经在 OS X 10.4 和 10.3 中成功使用了 Shell('open ' + Filename),它似乎对大多数文件类型都工作得相当好。

我在 shell 提示符下偶然发现了 open ,现在在 cygwin/linux 等中错过了它。

I've successfully used Shell('open ' + Filename) in OS X 10.4 and 10.3 which seems to work rather nicely for most filetypes.

I stumbled across open at the shell prompt and now miss it in cygwin/linux etc.

只是一片海 2024-07-22 00:36:50

如果要使用 ShellExecute 通过其首选应用程序打开文档,则可以使用 LCLIntf 单元中的 OpenDocument 过程。

Lazarus 转换工具也使用此替代 ShellExecute,请参阅 Lazarus wiki。 在内部它使用 RobS 提到的 open。

If you want to use ShellExecute to open a document with its preferred application, then you can use the OpenDocument procedure from the LCLIntf unit.

The Lazarus conversion tool also uses this replacement for ShellExecute, see the Lazarus wiki. Internally it uses open as mentioned by RobS.

猫性小仙女 2024-07-22 00:36:50

fork 在 Mac 上很痛苦。 BSD 使用 vfork,而不是 fork。

fork hurts on Mac. BSDs use vfork, not fork.

浊酒尽余欢 2024-07-22 00:36:49

{ 这是执行此操作的代码。 使用 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;

{ Here is code to do it. Use the TProcess object! }

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;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文