我對P/Invoke不太好。任何人都可以告訴我如何在.NET中聲明和使用下面的shell32.dll函數?P/Invoke for shell32.dll的SHMultiFileProperties
從http://msdn.microsoft.com/en-us/library/bb762230%28VS.85%29.aspx:
HRESULT SHMultiFileProperties(
IDataObject *pdtobj,
DWORD dwFlags
);
它是用於顯示多個文件系統對象Windows外殼程序屬性對話框。
我已經想通了如何使用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,
}
誰能幫助?
這讓我在正確的道路上,是一個問題的答案,那麼答案+,+ 1 但是,它更復雜。我正在尋找多文件屬性(如項目的總大小),而不是文件夾外觀設置。幸運的是,我在Code Project上找到了包含必要代碼的JFileManager: http://www.codeproject.com/KB/files/JFileManager.aspx 在JDropFiles類中查找CopyFilesToClipboardForDragDrop(paths,pt)。這有助於在IDataObject中創建Shell ID列表數據。 因此,它適用於Vista,但它仍然在Windows 2003上失敗。仍在尋找完美的解決方案。 – 2009-08-18 18:44:38