P / Chamar para SHMultiFileProperties das Shell32.dll
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?
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