private static string PinvokePath(Guid guid, KnownFolderFlag flags) { SHGetKnownFolderPath(guid, (uint)flags, IntPtr.Zero, out var pPath); // public documents string path = Marshal.PtrToStringUni(pPath); Marshal.FreeCoTaskMem(pPath); return(path); }
private static string pinvokePath(KnownFolderFlag flags) { IntPtr pPath; SHGetKnownFolderPath(CommonDocumentsGuid, (uint)flags, IntPtr.Zero, out pPath); // public documents string path = System.Runtime.InteropServices.Marshal.PtrToStringUni(pPath); System.Runtime.InteropServices.Marshal.FreeCoTaskMem(pPath); return(path); }
public static void EnumerateKnownFolders() { KnownFolderFlag[] flags = new KnownFolderFlag[] { KnownFolderFlag.None, KnownFolderFlag.ALIAS_ONLY | KnownFolderFlag.DONT_VERFIY, KnownFolderFlag.DEFAULT_PATH | KnownFolderFlag.NOT_PARENT_RELATIVE, }; foreach (var flag in flags) { Console.WriteLine(string.Format("{0}; P/Invoke==>{1}", flag, pinvokePath(flag))); } Console.ReadLine(); }
public static void EnumerateKnownFolders() { KnownFolderFlag[] flags = new KnownFolderFlag[] { KnownFolderFlag.KF_FLAG_DEFAULT, KnownFolderFlag.KF_FLAG_ALIAS_ONLY | KnownFolderFlag.KF_FLAG_DONT_VERIFY, KnownFolderFlag.KF_FLAG_DEFAULT_PATH | KnownFolderFlag.KF_FLAG_NOT_PARENT_RELATIVE, }; foreach (var flag in flags) { Console.WriteLine(string.Format("{0}; P/Invoke==>{1}\n", flag, pinvokePath(CommonDocumentsGuid, flag))); } Console.ReadLine(); }
public static void EnumerateKnownFolders() { KnownFolderFlag[] flags = new KnownFolderFlag[] { KnownFolderFlag.None, KnownFolderFlag.ALIAS_ONLY | KnownFolderFlag.DONT_VERFIY, KnownFolderFlag.DEFAULT_PATH | KnownFolderFlag.NOT_PARENT_RELATIVE, }; foreach (var flag in flags) { Console.WriteLine($@"{flag}; P/Invoke==>{PinvokePath(CommonDocumentsGuid, flag)}"); } Console.ReadLine(); }
public static string GetKnownFolderPath(Guid guid, KnownFolderFlag flags) { uint result = SHGetKnownFolderPath(guid, (uint)flags, IntPtr.Zero, out IntPtr pPath); try { if (result == S_OK) { string path = Marshal.PtrToStringUni(pPath); return(path); } else { return(null); } } finally { Marshal.FreeCoTaskMem(pPath); } }