public static string[] GetApplicationUrls(string filePath, LSRolesMask roles) { IntPtr url = IntPtr.Zero; IntPtr arr = IntPtr.Zero; try { url = CreatePathUrl(filePath); arr = LSCopyApplicationURLsForURL(url, roles); if (arr == IntPtr.Zero) { return(new string[0]); } int count = CFArrayGetCount(arr); string[] values = new string [count]; for (int i = 0; i < values.Length; i++) { var u = CFArrayGetValueAtIndex(arr, i); if (u != IntPtr.Zero) { values[i] = UrlToPath(u); } } return(values); } finally { if (url != IntPtr.Zero) { Release(url); } if (arr != IntPtr.Zero) { Release(arr); } } }
public static string GetApplicationUrl(string filePath, LSRolesMask roles) { IntPtr url = IntPtr.Zero; try { url = CreatePathUrl(filePath); IntPtr appUrl = IntPtr.Zero; if (LSGetApplicationForURL(url, roles, IntPtr.Zero, ref appUrl) == 0 && appUrl != IntPtr.Zero) { return(UrlToPath(appUrl)); } return(null); } finally { if (url != IntPtr.Zero) { Release(url); } } }
extern static IntPtr LSCopyApplicationURLsForURL(IntPtr urlRef, LSRolesMask roleMask); //CFArrayRef
extern static int LSGetApplicationForURL(IntPtr url, LSRolesMask roleMask, IntPtr fsRefZero, ref IntPtr appUrl);
public static string[] GetApplicationUrls (string filePath, LSRolesMask roles) { IntPtr url = IntPtr.Zero; IntPtr arr = IntPtr.Zero; try { url = CreatePathUrl (filePath); arr = LSCopyApplicationURLsForURL (url, roles); if (arr == IntPtr.Zero) return new string[0]; int count = CFArrayGetCount (arr); string[] values = new string [count]; for (int i = 0; i < values.Length; i++ ) { var u = CFArrayGetValueAtIndex (arr, i); if (u != IntPtr.Zero) values[i] = UrlToPath (u); } return values; } finally { if (url != IntPtr.Zero) Release (url); if (arr != IntPtr.Zero) Release (arr); } }
public static string GetApplicationUrl (string filePath, LSRolesMask roles) { IntPtr url = IntPtr.Zero; try { url = CreatePathUrl (filePath); IntPtr appUrl = IntPtr.Zero; if (LSGetApplicationForURL (url, roles, IntPtr.Zero, ref appUrl) == 0 && appUrl != IntPtr.Zero) return UrlToPath (appUrl); return null; } finally { if (url != IntPtr.Zero) Release (url); } }
extern static int LSGetApplicationForURL (IntPtr url, LSRolesMask roleMask, IntPtr fsRefZero, ref IntPtr appUrl);
extern static IntPtr LSCopyApplicationURLsForURL (IntPtr urlRef, LSRolesMask roleMask); //CFArrayRef
static extern IntPtr LSCopyApplicationURLsForURL(IntPtr urlRef, LSRolesMask roleMask);