Я не очень хорош с P/Invoke. Может ли кто-нибудь сказать мне, как объявить и использовать следующую функцию shell32.dll в .NET?P/Invoke для SHMultiFileProperties shell32.dll
От http://msdn.microsoft.com/en-us/library/bb762230%28VS.85%29.aspx:
HRESULT SHMultiFileProperties(
IDataObject *pdtobj,
DWORD dwFlags
);
Он предназначен для отображения диалоговых окон свойств оболочки для нескольких объектов файловой системы.
Я уже понял, как использовать 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 Однако, это гораздо сложнее. Я искал свойства нескольких файлов (например, общий размер элементов), а не настройки внешнего вида папки. К счастью, я нашел JFileManager на код проекта, который содержит необходимый код: http://www.codeproject.com/KB/files/JFileManager.aspx Посмотрите на CopyFilesToClipboardForDragDrop (трактов, Pt) в классе JDropFiles. Это помогает создать данные списка идентификаторов оболочки в IDataObject. Так что это работает в Vista, но все равно не работает в Windows 2003. Все еще ищет идеальное решение. –