我对P / Invoke不太满意。谁能告诉我如何在.NET中声明和使用以下shell32.dll函数?
来自http://msdn.microsoft.com/en-us/library/bb762230%28VS.85%29.aspx:
HRESULT SHMultiFileProperties(
IDataObject *pdtobj,
DWORD dwFlags
);
用于显示多个文件系统对象的Windows Shell Properties对话框。
我已经想出如何将SHObjectProperties用于一个文件或文件夹:
[DllImport("shell32.dll", SetLastError = true)]
static extern bool SHObjectProperties(uint hwnd, uint shopObjectType, [MarshalAs(UnmanagedType.LPWStr)] string pszObjectName, [MarshalAs(UnmanagedType.LPWStr)] string pszPropertyPage);
public static void ShowDialog(Form parent, FileSystemInfo selected)
{
SHObjectProperties((uint)parent.Handle, (uint)ObjectType.File, selected.FullName, null));
}
enum ObjectType
{
Printer = 0x01,
File = 0x02,
VoumeGuid = 0x04,
}
有人可以帮忙吗?
答案 0 :(得分:4)
.NET Framework中有一个IDataObject接口和一个DataObject类。
[DllImport("shell32.dll", SetLastError = true)]
static extern int SHMultiFileProperties(IDataObject pdtobj, int flags);
public static void Foo()
{
var pdtobj = new DataObject();
pdtobj.SetFileDropList(new StringCollection { @"C:\Users", @"C:\Windows" });
if (SHMultiFileProperties(pdtobj, 0) != 0 /*S_OK*/)
{
throw new Win32Exception();
}
}
编辑:我刚刚编译并测试了它并且它可以正常运行(弹出一些带有文件夹外观设置的对话框)。
答案 1 :(得分:0)
我可能错误地读了你的问题,但我认为你正在寻找文件的扩展文件属性。即打开Windows资源管理器并查看属性,所有者,版权,大小,创建日期等列?
Shell32中有一个名为GetDetailsOf的API,它将提供此信息。 codeproject上的一篇文章 干杯, 约翰