Вопрос

Я не очень хорошо разбираюсь в P/Invoke.Может ли кто-нибудь сказать мне, как объявить и использовать следующую функцию Shell32.dll в .NET?

От 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,
}

Кто-нибудь может помочь?

Это было полезно?

Решение

Есть Идатаобъект интерфейс и Объект данных класс в .NET Framework.

[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();
    }
}

РЕДАКТИРОВАТЬ: Я только что скомпилировал и протестировал это, и оно работает (всплывает диалоговое окно с настройками внешнего вида папки).

Другие советы

Возможно, я неправильно прочитал ваш вопрос, но я думаю, что вы ищете расширенные свойства файлов.то естьоткрыть проводник Windows и просмотреть столбцы, такие как атрибуты, владелец, авторские права, размер, дата создания и т. д.?

В Shell32 есть API под названием GetDetailsOf, который предоставит эту информацию.Стартовая статья о кодпроект Ура, Джон

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top