Pergunta

Eu não sou muito bom com P / Invoke. Alguém pode me dizer como declarar e usar a seguinte função shell32.dll em .NET?

A partir http://msdn.microsoft. com / en-us / library / bb762230% 28VS.85% 29.aspx :

HRESULT SHMultiFileProperties(      
    IDataObject *pdtobj,
    DWORD dwFlags
);

É para exibir o diálogo Propriedades do Windows Shell para vários objetos do sistema de arquivos.

Eu já descobriu como usar SHObjectProperties para um arquivo ou pasta:

[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,
}

alguém pode ajudar?

Foi útil?

Solução

Há um IDataObject interface e um DataObject classe no .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();
    }
}

EDIT:. Acabei compilado e testado isso e ele funciona (pops algum diálogo com configurações de aparência pasta)

Outras dicas

Eu talvez lendo você pergunta incorretamente, mas acho que você está procurando as propriedades do arquivo estendidos para arquivos. ou seja, janelas que se abrem explorador e visualização de colunas como atributos, proprietário, direitos de autor, tamanho, data de criação etc?

Há uma API em Shell32 chamado GetDetailsOf que irá fornecer esta informação. Um artigo a partir de codeproject Felicidades, John

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top