Я пытаюсь использовать рамку LaunchServices. К сожалению, некоторые функции остаются недоступными. Например, функция kLSSharedFileListFavoriteItems была успешно импортирована. Однако я не могу загрузить функцию LSSHaredFileListCreate. Код:Как добавить рамки LaunchServices (mac os) в Delphi xe4?
unit LSSharedFileList;
interface
uses MacApi.CoreFoundation, MacApi.CocoaTypes;
const
LaunchServicesLib =
'/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/LaunchServices';
type
{$EXTERNALSYM LSSHaredFileListRef}
LSSHaredFileListRef = Pointer;
{$EXTERNALSYM LSSHaredFileListCreate}
function LSSHaredFileListCreate(inAlloccator : CFAllocatorRef; inListType : CFStringRef;
listOptions : CFTypeRef) : LSSHaredFileListRef; cdecl;
{$EXTERNALSYM kLSSharedFileListFavoriteItems}
function kLSSharedFileListFavoriteItems() : CFStringRef; cdecl;
implementation
uses Posix.Dlfcn;
var
_LSSHaredFileListCreate : Pointer = nil;
_kLSSharedFileListFavoriteItems : Pointer = nil;
_libHandle : THandle = 0;
//--------------------------------------------------------------------------------
function LSSHaredFileListCreate(inAlloccator : CFAllocatorRef; inListType : CFStringRef;
listOptions : CFTypeRef) : LSSHaredFileListRef;
begin
if not Assigned(_LSSHaredFileListCreate) then
_LSSHaredFileListCreate := dlSym(_libHandle, MarshaledAString('LSSHaredFileListCreate'));
Result := nil;//
end;
//-----------------------------------------------------------------------
function kLSSharedFileListFavoriteItems() : CFStringRef;
begin
if not Assigned(_kLSSharedFileListFavoriteItems) then
_kLSSharedFileListFavoriteItems := dlSym(_libHandle, MarshaledAString('kLSSharedFileListFavoriteItems'));
Result := CFStringRef(_kLSSharedFileListFavoriteItems^)
end;
//----------------------------
initialization
_libHandle := dlOpen(MarshaledAString(LaunchServicesLib), RTLD_LAZY);
finalization
dlclose(_libHandle)
end.
Так, _LSSHaredFileListCreate всегда NIL в отличие от _kLSSharedFileListFavoriteItems, которая имеет правильный адрес. Может быть, "LSSharedFileListCreate" содержит в другой lib? Любая идея? Спасибо.
Довольно старая тема, но вам удалось получить, что LaunchServices код работает? Вызов 'LSSharedFileListCreate (nil, kLSSharedFileListSessionLoginItems, nil)' всегда возвращался ** nil **, когда я запускал его, по крайней мере, на El Capitan. Как в подписанном, так и в неподписанном приложении. – VGeorgiev