Domanda

Non sono molto bravo con P / Invoke. Qualcuno può dirmi come dichiarare e utilizzare la seguente funzione shell32.dll in .NET?

http://msdn.microsoft. com / it-it / library / bb762230% 28VS.85% 29.aspx :

HRESULT SHMultiFileProperties(      
    IDataObject *pdtobj,
    DWORD dwFlags
);

E 'per visualizzare la finestra di shell di Windows proprietà di più oggetti del file system.

I già capito come utilizzare SHObjectProperties per un file o una cartella:

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

Chiunque può aiutare?

È stato utile?

Soluzione

C'è un href="http://msdn.microsoft.com/en-us/library/system.windows.forms.idataobject.aspx" rel="nofollow noreferrer"> IDataObject interfaccia DataObject classe in .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:. Ho appena compilato e testato questo e funziona (si apre un po 'di dialogo con le impostazioni della cartella di aspetto)

Altri suggerimenti

I magari leggendo si mette in discussione in modo non corretto, ma penso che si sta cercando le proprietà dei file estesi per i file. vale a dire l'apertura di Windows Explorer e la visualizzazione di colonne come attributi, proprietario, copyright, dimensione, data di creazione, ecc?

C'è un'API in Shell32 chiamato GetDetailsOf che fornirà queste informazioni. Un articolo a partire dal CodeProject Saluti, John

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top