我正在研究面向Mac OS和Windows的Delphi XE2应用程序.我希望集成到上下文菜单中.对于Windows,这是一项简单的任务.但对于Mac OS,我不知道该怎么做.
我已阅读提供服务文档并在Delphi中尝试了类似的代码,但没有运气.
查看Finder集成试验的简单代码.
App.dpr
program App;
uses
SysUtils,
{$IFDEF MACOS}
AppKit, CocoaTypes, CoreFoundation,
CoreServices, Foundation, Mach, ObjCRuntime,
ObjectiveC, OCMarshal, OpenGL, QuartzCore, Security,
SystemConfiguration,
{$ENDIF}
MessageProvider;
{$IFDEF MACOS}
var
app: NSApplication;
provider: TMessageProvider;
{$ENDIF}
begin
Application.Initialize;
{$IFDEF MACOS}
provider := TMessageProvider.Create();
app := TNSApplication.Alloc();
app.setServicesProvider(provider);
{$ENDIF}
Application.CreateForm(TFormOSVersion, FormOSVersion);
Application.Run;
end.
Run Code Online (Sandbox Code Playgroud)
MessageProvider.pas
unit MessageProvider;
interface
uses
FMX.Dialogs
{$IFDEF MACOS}
, AppKit, CocoaTypes, CoreFoundation,
CoreServices, Foundation, Mach, ObjCRuntime,
ObjectiveC, OCMarshal, OpenGL, QuartzCore, Security,
SystemConfiguration
{$ENDIF}
;
type
TMessageProvider …Run Code Online (Sandbox Code Playgroud) 如果您已经知道服务的名称,则可以以编程方式调用服务。据我了解,“服务”菜单是通过在每个已发布的服务上调用验证方法来构建的。
有没有办法在不使用服务用户对话框的情况下访问已安装服务的列表?
编辑:我不是指后台进程。我说的是 Finder 中“服务”菜单中的项目。概述它们在这里。
appkit ×1
cocoa ×1
delphi ×1
delphi-xe2 ×1
finder ×1
macos ×1
macos-sierra ×1
objective-c ×1
swift3 ×1