我编写了一个函数,它允许我获取任何文件的所有属性。
此功能甚至适用于文件夹。
但我提到,如果没有“Windows API 代码包”并使用“Shell32”,您可以尽早获得任何文件的大约 308 个属性。
Shell32.Shell shell = new Shell32.Shell();
shell.NameSpace(@"C:\_test\clip.mp4").GetDetailsOf(null, i); // i = 0...320
但是,使用“Windows API 代码包”时,“DefaultPropertyCollection”集合中只有 56 个属性。
例如,此集合中没有“评级”属性。
然后我意识到我应该查看“shellFile.Properties.System”而不是“shellFile.Properties.DefaultPropertyCollection”
private void GetFileDatails(string path)
{
var shellFile = ShellFile.FromParsingName(path);
textBox1.Text += shellFile.Properties.DefaultPropertyCollection.Count + "\r\n";
shellFile.Properties.DefaultPropertyCollection.ToList().ForEach(el => textBox1.Text += el.Description.CanonicalName + " - " + el.Description.DisplayName + " = " + el.ValueAsObject + "\r\n");
textBox1.Text += "\r\n" + shellFile.Properties.System.Rating;
}
是的,这是真的!
但是,您如何使用此“shellFile.Properties.System”获取任何文件的所有其他 200 多个属性?
它甚至不是收藏!它不是 IEnumerable!你不能使用 foreach 循环!
你应该总是输入
"shellFile.Properties.System.*" //you should type this line more then 100 times
无论如何,我也无法获得根驱动器的详细信息!
无论是使用“Windows API 代码包”还是使用“Shell32”,我都无法获得任何分区的“DriveFormat”!请!告诉我如何获取“C Drive”详细信息?