1 {
2      File:       LSOpen.h
3 
4      Contains:   Public interfaces for LaunchServices.framework
5 
6      Copyright:  (c) 2003-2012 by Apple Inc. All rights reserved.
7 
8      Bugs?:      For bug reports, consult the following page on
9                  the World Wide Web:
10 
11                      http://bugs.freepascal.org
12 }
13 
14 
15 {
16     Modified for use with Free Pascal
17     Version 308
18     Please report any bugs to <gpc@microbizz.nl>
19 }
20 
21 {$ifc not defined MACOSALLINCLUDE or not MACOSALLINCLUDE}
22 {$mode macpas}
23 {$modeswitch cblocks}
24 {$packenum 1}
25 {$macro on}
26 {$inline on}
27 {$calling mwpascal}
28 
29 unit LSOpen;
30 interface
31 {$setc UNIVERSAL_INTERFACES_VERSION := $0400}
32 {$setc GAP_INTERFACES_VERSION := $0308}
33 
34 {$ifc not defined USE_CFSTR_CONSTANT_MACROS}
35     {$setc USE_CFSTR_CONSTANT_MACROS := TRUE}
36 {$endc}
37 
38 {$ifc defined CPUPOWERPC and defined CPUI386}
39 	{$error Conflicting initial definitions for CPUPOWERPC and CPUI386}
40 {$endc}
41 {$ifc defined FPC_BIG_ENDIAN and defined FPC_LITTLE_ENDIAN}
42 	{$error Conflicting initial definitions for FPC_BIG_ENDIAN and FPC_LITTLE_ENDIAN}
43 {$endc}
44 
45 {$ifc not defined __ppc__ and defined CPUPOWERPC32}
46 	{$setc __ppc__ := 1}
47 {$elsec}
48 	{$setc __ppc__ := 0}
49 {$endc}
50 {$ifc not defined __ppc64__ and defined CPUPOWERPC64}
51 	{$setc __ppc64__ := 1}
52 {$elsec}
53 	{$setc __ppc64__ := 0}
54 {$endc}
55 {$ifc not defined __i386__ and defined CPUI386}
56 	{$setc __i386__ := 1}
57 {$elsec}
58 	{$setc __i386__ := 0}
59 {$endc}
60 {$ifc not defined __x86_64__ and defined CPUX86_64}
61 	{$setc __x86_64__ := 1}
62 {$elsec}
63 	{$setc __x86_64__ := 0}
64 {$endc}
65 {$ifc not defined __arm__ and defined CPUARM}
66 	{$setc __arm__ := 1}
67 {$elsec}
68 	{$setc __arm__ := 0}
69 {$endc}
70 {$ifc not defined __arm64__ and defined CPUAARCH64}
71   {$setc __arm64__ := 1}
72 {$elsec}
73   {$setc __arm64__ := 0}
74 {$endc}
75 
76 {$ifc defined cpu64}
77   {$setc __LP64__ := 1}
78 {$elsec}
79   {$setc __LP64__ := 0}
80 {$endc}
81 
82 
83 {$ifc defined __ppc__ and __ppc__ and defined __i386__ and __i386__}
84 	{$error Conflicting definitions for __ppc__ and __i386__}
85 {$endc}
86 
87 {$ifc defined __ppc__ and __ppc__}
88 	{$setc TARGET_CPU_PPC := TRUE}
89 	{$setc TARGET_CPU_PPC64 := FALSE}
90 	{$setc TARGET_CPU_X86 := FALSE}
91 	{$setc TARGET_CPU_X86_64 := FALSE}
92 	{$setc TARGET_CPU_ARM := FALSE}
93 	{$setc TARGET_CPU_ARM64 := FALSE}
94 	{$setc TARGET_OS_MAC := TRUE}
95 	{$setc TARGET_OS_IPHONE := FALSE}
96 	{$setc TARGET_IPHONE_SIMULATOR := FALSE}
97 	{$setc TARGET_OS_EMBEDDED := FALSE}
98 {$elifc defined __ppc64__ and __ppc64__}
99 	{$setc TARGET_CPU_PPC := FALSE}
100 	{$setc TARGET_CPU_PPC64 := TRUE}
101 	{$setc TARGET_CPU_X86 := FALSE}
102 	{$setc TARGET_CPU_X86_64 := FALSE}
103 	{$setc TARGET_CPU_ARM := FALSE}
104 	{$setc TARGET_CPU_ARM64 := FALSE}
105 	{$setc TARGET_OS_MAC := TRUE}
106 	{$setc TARGET_OS_IPHONE := FALSE}
107 	{$setc TARGET_IPHONE_SIMULATOR := FALSE}
108 	{$setc TARGET_OS_EMBEDDED := FALSE}
109 {$elifc defined __i386__ and __i386__}
110 	{$setc TARGET_CPU_PPC := FALSE}
111 	{$setc TARGET_CPU_PPC64 := FALSE}
112 	{$setc TARGET_CPU_X86 := TRUE}
113 	{$setc TARGET_CPU_X86_64 := FALSE}
114 	{$setc TARGET_CPU_ARM := FALSE}
115 	{$setc TARGET_CPU_ARM64 := FALSE}
116 {$ifc defined iphonesim}
117  	{$setc TARGET_OS_MAC := FALSE}
118 	{$setc TARGET_OS_IPHONE := TRUE}
119 	{$setc TARGET_IPHONE_SIMULATOR := TRUE}
120 {$elsec}
121 	{$setc TARGET_OS_MAC := TRUE}
122 	{$setc TARGET_OS_IPHONE := FALSE}
123 	{$setc TARGET_IPHONE_SIMULATOR := FALSE}
124 {$endc}
125 	{$setc TARGET_OS_EMBEDDED := FALSE}
126 {$elifc defined __x86_64__ and __x86_64__}
127 	{$setc TARGET_CPU_PPC := FALSE}
128 	{$setc TARGET_CPU_PPC64 := FALSE}
129 	{$setc TARGET_CPU_X86 := FALSE}
130 	{$setc TARGET_CPU_X86_64 := TRUE}
131 	{$setc TARGET_CPU_ARM := FALSE}
132 	{$setc TARGET_CPU_ARM64 := FALSE}
133 {$ifc defined iphonesim}
134  	{$setc TARGET_OS_MAC := FALSE}
135 	{$setc TARGET_OS_IPHONE := TRUE}
136 	{$setc TARGET_IPHONE_SIMULATOR := TRUE}
137 {$elsec}
138 	{$setc TARGET_OS_MAC := TRUE}
139 	{$setc TARGET_OS_IPHONE := FALSE}
140 	{$setc TARGET_IPHONE_SIMULATOR := FALSE}
141 {$endc}
142 	{$setc TARGET_OS_EMBEDDED := FALSE}
143 {$elifc defined __arm__ and __arm__}
144 	{$setc TARGET_CPU_PPC := FALSE}
145 	{$setc TARGET_CPU_PPC64 := FALSE}
146 	{$setc TARGET_CPU_X86 := FALSE}
147 	{$setc TARGET_CPU_X86_64 := FALSE}
148 	{$setc TARGET_CPU_ARM := TRUE}
149 	{$setc TARGET_CPU_ARM64 := FALSE}
150 	{$setc TARGET_OS_MAC := FALSE}
151 	{$setc TARGET_OS_IPHONE := TRUE}
152 	{$setc TARGET_IPHONE_SIMULATOR := FALSE}
153 	{$setc TARGET_OS_EMBEDDED := TRUE}
154 {$elifc defined __arm64__ and __arm64__}
155 	{$setc TARGET_CPU_PPC := FALSE}
156 	{$setc TARGET_CPU_PPC64 := FALSE}
157 	{$setc TARGET_CPU_X86 := FALSE}
158 	{$setc TARGET_CPU_X86_64 := FALSE}
159 	{$setc TARGET_CPU_ARM := FALSE}
160 	{$setc TARGET_CPU_ARM64 := TRUE}
161 {$ifc defined ios}
162 	{$setc TARGET_OS_MAC := FALSE}
163 	{$setc TARGET_OS_IPHONE := TRUE}
164 	{$setc TARGET_OS_EMBEDDED := TRUE}
165 {$elsec}
166 	{$setc TARGET_OS_MAC := TRUE}
167 	{$setc TARGET_OS_IPHONE := FALSE}
168 	{$setc TARGET_OS_EMBEDDED := FALSE}
169 {$endc}
170 	{$setc TARGET_IPHONE_SIMULATOR := FALSE}
171 {$elsec}
172 	{$error __ppc__ nor __ppc64__ nor __i386__ nor __x86_64__ nor __arm__ nor __arm64__ is defined.}
173 {$endc}
174 
175 {$ifc defined __LP64__ and __LP64__ }
176   {$setc TARGET_CPU_64 := TRUE}
177 {$elsec}
178   {$setc TARGET_CPU_64 := FALSE}
179 {$endc}
180 
181 {$ifc defined FPC_BIG_ENDIAN}
182 	{$setc TARGET_RT_BIG_ENDIAN := TRUE}
183 	{$setc TARGET_RT_LITTLE_ENDIAN := FALSE}
184 {$elifc defined FPC_LITTLE_ENDIAN}
185 	{$setc TARGET_RT_BIG_ENDIAN := FALSE}
186 	{$setc TARGET_RT_LITTLE_ENDIAN := TRUE}
187 {$elsec}
188 	{$error Neither FPC_BIG_ENDIAN nor FPC_LITTLE_ENDIAN are defined.}
189 {$endc}
190 {$setc ACCESSOR_CALLS_ARE_FUNCTIONS := TRUE}
191 {$setc CALL_NOT_IN_CARBON := FALSE}
192 {$setc OLDROUTINENAMES := FALSE}
193 {$setc OPAQUE_TOOLBOX_STRUCTS := TRUE}
194 {$setc OPAQUE_UPP_TYPES := TRUE}
195 {$setc OTCARBONAPPLICATION := TRUE}
196 {$setc OTKERNEL := FALSE}
197 {$setc PM_USE_SESSION_APIS := TRUE}
198 {$setc TARGET_API_MAC_CARBON := TRUE}
199 {$setc TARGET_API_MAC_OS8 := FALSE}
200 {$setc TARGET_API_MAC_OSX := TRUE}
201 {$setc TARGET_CARBON := TRUE}
202 {$setc TARGET_CPU_68K := FALSE}
203 {$setc TARGET_CPU_MIPS := FALSE}
204 {$setc TARGET_CPU_SPARC := FALSE}
205 {$setc TARGET_OS_UNIX := FALSE}
206 {$setc TARGET_OS_WIN32 := FALSE}
207 {$setc TARGET_RT_MAC_68881 := FALSE}
208 {$setc TARGET_RT_MAC_CFM := FALSE}
209 {$setc TARGET_RT_MAC_MACHO := TRUE}
210 {$setc TYPED_FUNCTION_POINTERS := TRUE}
211 {$setc TYPE_BOOL := FALSE}
212 {$setc TYPE_EXTENDED := FALSE}
213 {$setc TYPE_LONGLONG := TRUE}
214 uses MacTypes,CFBase,CFArray,CFDictionary,CFURL,Files,Processes,LSInfo,AEDataModel;
215 {$endc} {not MACOSALLINCLUDE}
216 
217 
218 
219 {$ifc TARGET_OS_MAC}
220 
221 {$ALIGN MAC68K}
222 
223 { ======================================================================================================== }
224 { LaunchServices Type & Constants                                                                          }
225 { ======================================================================================================== }
226 
227 type
228 	LSLaunchFlags = OptionBits;
229 const
230 	kLSLaunchDefaults = $00000001; { Defaults = open, async, use Info.plist, start Classic}
231 	kLSLaunchAndPrint = $00000002; { Print items instead of open them}
232 	kLSLaunchReserved2 = $00000004;
233 	kLSLaunchReserved3 = $00000008;
234 	kLSLaunchReserved4 = $00000010;
235 	kLSLaunchReserved5 = $00000020;
236 	kLSLaunchAndDisplayErrors = $00000040; { Report launch/open failures in the UI}
237 	kLSLaunchInhibitBGOnly = $00000080; { Causes launch to fail if target is background-only.}
238 	kLSLaunchDontAddToRecents = $00000100; { Do not add app or documents to recents menus.}
239 	kLSLaunchDontSwitch = $00000200; { Do not bring new app to the foreground.}
240 	kLSLaunchNoParams = $00000800; { Use Info.plist to determine launch parameters}
241 	kLSLaunchAsync = $00010000; { Asynchronous launch; return as soon as the app starts launching.}
242 	kLSLaunchStartClassic = $00020000; { Start up Classic environment if required for app.}
243 	kLSLaunchInClassic = $00040000; { Force app to launch in Classic environment.}
244 	kLSLaunchNewInstance = $00080000; { Instantiate app even if it is already running.}
245 	kLSLaunchAndHide = $00100000; { Send child a "hide" request as soon as it checks in.}
246 	kLSLaunchAndHideOthers = $00200000; { Hide all other apps when the app checks in.}
247 	kLSLaunchHasUntrustedContents = $00400000;  { Mark items to be opened as untrusted}
248 
249 type
250 	LSLaunchFSRefSpec = record
251 		appRef: {const} FSRefPtr;                 { app to use, can be NULL}
252 		numDocs: ItemCount;                { items to open/print, can be zero}
253 		itemRefs: {const} FSRefPtr;               { array of FSRefs, ignored when numDocs is zero}
254 		passThruParams: {const} AEDescPtr;         { passed untouched to application as optional event parameter, }
255                                               { with keyword keyAEPropData (can be NULL)}
256 		launchFlags: LSLaunchFlags;
257 		asyncRefCon: UnivPtr;            { used if you register for app birth/death notification}
258 	end;
259 type
260 	LSLaunchURLSpec = record
261 		appURL: CFURLRef;                 { app to use, can be NULL}
262 		itemURLs: CFArrayRef;               { items to open/print, can be NULL}
263 		passThruParams: {const} AEDescPtr;         { passed untouched to application as optional parameter (can be NULL)}
264 		launchFlags: LSLaunchFlags;
265 		asyncRefCon: UnivPtr;            { used if you register for app birth/death notification}
266 	end;
267 
268 
269 { ======================================================================================================== }
270 { LaunchServices API                                                                                       }
271 { ======================================================================================================== }
272 
273 {
274  *  LSOpenFSRef()
275  *
276  *  Summary:
277  *    Open an application, document, or folder.
278  *
279  *  Discussion:
280  *    Opens applications, documents, and folders. Applications are
281  *    opened via an 'oapp' or 'rapp' event. Documents are opened in
282  *    their user-overridden or default applications as appropriate.
283  *    Folders are opened in the Finder. Use the more specific
284  *    LSOpenFromRefSpec for more control over launching.
285  *
286  *  Mac OS X threading:
287  *    Thread safe since version 10.2
288  *
289  *  Parameters:
290  *
291  *    inRef:
292  *      The FSRef of the item to launch.
293  *
294  *    outLaunchedRef:
295  *      The FSRef of the item actually launched. For inRefs that are
296  *      documents, outLaunchedRef will be the application used to
297  *      launch the document. Can be NULL.
298  *
299  *  Availability:
300  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
301  *    CarbonLib:        not available in CarbonLib 1.x
302  *    Non-Carbon CFM:   not available
303  }
LSOpenFSRefnull304 function LSOpenFSRef( const (*var*) inRef: FSRef; outLaunchedRef: FSRefPtr { can be NULL } ): OSStatus; external name '_LSOpenFSRef';
305 (* __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA) *)
306 
307 
308 {
309  *  LSOpenCFURLRef()
310  *
311  *  Summary:
312  *    Open an application, document, or folder.
313  *
314  *  Discussion:
315  *    Opens applications, documents, and folders. Applications are
316  *    opened via an 'oapp' or 'rapp' event. Documents are opened in
317  *    their user-overridden or default applications as appropriate.
318  *    Folders are opened in the Finder. Use the more specific
319  *    LSOpenFromURLSpec for more control over launching.
320  *
321  *  Mac OS X threading:
322  *    Thread safe since version 10.2
323  *
324  *  Parameters:
325  *
326  *    inURL:
327  *      The CFURLRef of the item to launch.
328  *
329  *    outLaunchedURL:
330  *      The CFURLRef of the item actually launched. For inURLs that are
331  *      documents, outLaunchedURL will be the application used to
332  *      launch the document. Can be NULL. THIS FUNCTION, DESPITE ITS
333  *      NAME, RETAINS THE URL REFERENCE ON BEHALF OF THE CALLER. THE
334  *      CALLER MUST EVENTUALLY RELEASE THE RETURNED URL REFERENCE.
335  *
336  *  Availability:
337  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
338  *    CarbonLib:        not available in CarbonLib 1.x
339  *    Non-Carbon CFM:   not available
340  }
LSOpenCFURLRefnull341 function LSOpenCFURLRef( inURL: CFURLRef; outLaunchedURL: CFURLRefPtr { can be NULL } ): OSStatus; external name '_LSOpenCFURLRef';
342 (* __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA) *)
343 
344 
345 {
346  *  LSOpenFromRefSpec()
347  *
348  *  Summary:
349  *    Opens an application or one or more documents or folders.
350  *
351  *  Discussion:
352  *    Opens applications, documents, and folders.
353  *
354  *  Mac OS X threading:
355  *    Thread safe since version 10.2
356  *
357  *  Parameters:
358  *
359  *    inLaunchSpec:
360  *      The specification of what to launch and how to launch it.
361  *
362  *    outLaunchedRef:
363  *      The FSRef of the item actually launched. For inRefs that are
364  *      documents, outLaunchedRef will be the application used to
365  *      launch the document. Can be NULL.
366  *
367  *  Availability:
368  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
369  *    CarbonLib:        not available in CarbonLib 1.x
370  *    Non-Carbon CFM:   not available
371  }
LSOpenFromRefSpecnull372 function LSOpenFromRefSpec( const (*var*) inLaunchSpec: LSLaunchFSRefSpec; outLaunchedRef: FSRefPtr { can be NULL } ): OSStatus; external name '_LSOpenFromRefSpec';
373 (* __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA) *)
374 
375 
376 {
377  *  LSOpenFromURLSpec()
378  *
379  *  Summary:
380  *    Opens an application or one or more documents or folders.
381  *
382  *  Discussion:
383  *    Opens applications, documents, and folders.
384  *
385  *  Mac OS X threading:
386  *    Thread safe since version 10.2
387  *
388  *  Parameters:
389  *
390  *    inLaunchSpec:
391  *      The specification of what to launch and how to launch it.
392  *
393  *    outLaunchedURL:
394  *      The CFURLRef of the item actually launched. For inURLs that are
395  *      documents, outLaunchedURL will be the application used to
396  *      launch the document. Can be NULL. THIS FUNCTION, DESPITE ITS
397  *      NAME, RETAINS THE URL REFERENCE ON BEHALF OF THE CALLER. THE
398  *      CALLER MUST EVENTUALLY RELEASE THE RETURNED URL REFERENCE.
399  *
400  *  Availability:
401  *    Mac OS X:         in version 10.0 and later in CoreServices.framework
402  *    CarbonLib:        not available in CarbonLib 1.x
403  *    Non-Carbon CFM:   not available
404  }
LSOpenFromURLSpecnull405 function LSOpenFromURLSpec( const (*var*) inLaunchSpec: LSLaunchURLSpec; outLaunchedURL: CFURLRefPtr { can be NULL } ): OSStatus; external name '_LSOpenFromURLSpec';
406 (* __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_NA) *)
407 
408 
409 { ================================================================================== }
410 {   API for opening with a specific role and additional parameters                   }
411 { ================================================================================== }
412 
413 {
414  * LSApplicationParameters
415  *
416  *    This structure is used by the new LSOpen functions to specify
417  *    an application, launch flags, and additional parameters
418  *    controlling how an application is launched.
419  *
420  *    A version field allows the structure to be extended in
421  *    future releases.
422  }
423 type
424 	LSApplicationParameters = record
425 		version: CFIndex;                { This must be set to zero by the client }
426 		flags: LSLaunchFlags;                  { See the LSLaunchFlags enum }
427 		application: {const} FSRefPtr;            { The application to open (and possibly handle documents/URLs) }
428 		asyncLaunchRefCon: UnivPtr;      { The client refCon which will appear in subsequent launch notifications }
429 		environment: CFDictionaryRef;            { Environment variables to set in the launched process }
430                                               { (a dictionary of CFStringRef keys and values). Can be NULL. }
431 		argv: CFArrayRef;                   { Note: argv is ignored on 10.4. On 10.5 and later, the array elements }
432                                               { (which must be CFStringRefs) are passed as arguments to main() in the launched process. }
433 		initialEvent: AppleEventPtr;           { The first Apple Event to be sent to the launched process. Can be NULL. }
434 	end;
435 type
436 	LSApplicationParametersPtr = ^LSApplicationParameters;
437 
438 {
439  *  LSOpenApplication()
440  *
441  *    LSOpenApplication launches one application. This function
442  *    is an updated alternative to the Process Manager's LaunchApplication().
443  *
444  *    Launch arguments are specified in the inAppParams argument, which
445  *    must be supplied. If the application is already running in the current
446  *    session, it will be made the front process (unless the kLSLaunchNewInstance
447  *    flag is used, which will always cause a new process to be created).
448  *
449  *    If outPSN is not NULL, the structure it points to will contain the process
450  *    serial number of the launched (or activated) process. Note that for
451  *    asynchronous launches, the application may not have finished launching
452  *    when this function returns.
453  }
454 {
455  *  LSOpenApplication()
456  *
457  *  Mac OS X threading:
458  *    Thread safe since version 10.4
459  *
460  *  Availability:
461  *    Mac OS X:         in version 10.4 and later in CoreServices.framework
462  *    CarbonLib:        not available
463  *    Non-Carbon CFM:   not available
464  }
LSOpenApplicationnull465 function LSOpenApplication( const (*var*) appParams: LSApplicationParameters; outPSN: ProcessSerialNumberPtr { can be NULL } ): OSStatus; external name '_LSOpenApplication';
466 (* __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_NA) *)
467 
468 
469 {
470  *  LSOpenItemsWithRole()
471  *
472  *    Opens the items specified as an array of FSRefs with the role
473  *    specified by inRoleMask. If the role doesn't matter, use kLSRolesAll.
474  *
475  *    Clients can optionally specify the application and launch parameters
476  *    in inAppParams. If a specific application is given in inAppParams, then
477  *    inRoleMask is ignored and the application is launched (if necessary).
478  *    Otherwise, an application will be selected which can handle each input
479  *    item in the specified role(s).
480  *
481  *    Each launched application will receive an 'odoc' Apple Event specifying
482  *    which items are to be opened.
483  *
484  *    Note that if the input items array contains any applications, this
485  *    function will not launch them unless the kLSRolesShell bit is set
486  *    in the inRolesMask (in which case the application is its own shell).
487  *
488  *    The optional inAEParam argument specifies an AEDesc to be attached to
489  *    the Apple Event(s) generated by Launch Services with the specified
490  *    AEKeyword.
491  *
492  *    If not NULL, the outPSNs buffer will be filled with the PSN which
493  *    was used to open each item at the same index of the input FSRef array. The
494  *    PSN capacity of the output buffer is specified by inMaxPSNCount.
495  }
496 {
497  *  LSOpenItemsWithRole()
498  *
499  *  Mac OS X threading:
500  *    Thread safe since version 10.4
501  *
502  *  Availability:
503  *    Mac OS X:         in version 10.4 and later in CoreServices.framework
504  *    CarbonLib:        not available
505  *    Non-Carbon CFM:   not available
506  }
LSOpenItemsWithRolenull507 function LSOpenItemsWithRole( const (*var*) inItems: FSRef; inItemCount: CFIndex; inRole: LSRolesMask; {const} inAEParam: AEKeyDescPtr { can be NULL }; {const} inAppParams: LSApplicationParametersPtr { can be NULL }; outPSNs: ProcessSerialNumberPtr { can be NULL }; inMaxPSNCount: CFIndex ): OSStatus; external name '_LSOpenItemsWithRole';
508 (* __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_NA) *)
509 
510 
511 {
512  *  LSOpenURLsWithRole()
513  *
514  *    Opens the URLs specified by inURLs (an array of CFURLRefs) with the role
515  *    specified by inRoleMask. If the role doesn't matter, use kLSRolesAll.
516  *
517  *    Clients can optionally specify the application and launch parameters
518  *    in inAppParams. If a specific application is given in inAppParams, then
519  *    inRoleMask is ignored and the application is launched (if necessary).
520  *    Otherwise, an application will be selected which can handle each input
521  *    URL in at least one of the specified role(s).
522  *
523  *    Each launched application will receive one or more 'GURL' Apple Event
524  *    specifying the URLs to be opened. Clients may also pass file URLs, which
525  *    will be interpreted as file system items and opened in the manner of
526  *    LSOpenItemsWithRole (i.e., a handler will be selected base on the item's
527  *    metadata).
528  *
529  *    Note that if the input array contains any application URLs, this
530  *    function will not launch them unless the kLSRolesShell bit is set
531  *    in the inRolesMask (in which case the application is its own shell).
532  *
533  *    The optional inAEParam argument specifies an AEDesc to be attached to
534  *    the Apple Event(s) generated by Launch Services with the specified
535  *    AEKeyword.
536  *
537  *    If not NULL, the outPSNs buffer will be filled with the PSN which
538  *    was used to open each URL at the same index of the input URL array. The
539  *    PSN capacity of the output buffer is specified by inMaxPSNCount.
540  }
541 {
542  *  LSOpenURLsWithRole()
543  *
544  *  Mac OS X threading:
545  *    Thread safe since version 10.4
546  *
547  *  Availability:
548  *    Mac OS X:         in version 10.4 and later in CoreServices.framework
549  *    CarbonLib:        not available
550  *    Non-Carbon CFM:   not available
551  }
LSOpenURLsWithRolenull552 function LSOpenURLsWithRole( inURLs: CFArrayRef; inRole: LSRolesMask; {const} inAEParam: AEKeyDescPtr { can be NULL }; {const} inAppParams: LSApplicationParametersPtr { can be NULL }; outPSNs: ProcessSerialNumberPtr { can be NULL }; inMaxPSNCount: CFIndex ): OSStatus; external name '_LSOpenURLsWithRole';
553 (* __OSX_AVAILABLE_STARTING(__MAC_10_4, __IPHONE_NA) *)
554 
555 
556 {$endc} {TARGET_OS_MAC}
557 
558 {$ifc not defined MACOSALLINCLUDE or not MACOSALLINCLUDE}
559 
560 end.
561 {$endc} {not MACOSALLINCLUDE}
562