Question

Je ne suis pas très bon avec P / Invoke. Quelqu'un peut-il me dire comment déclarer et utiliser la fonction shell32.dll suivante dans .NET?

De http://msdn.microsoft. com / fr-fr / bibliothèque / bb762230% 28VS.85% 29.aspx :

HRESULT SHMultiFileProperties(      
    IDataObject *pdtobj,
    DWORD dwFlags
);

Il est pour afficher la boîte de dialogue Propriétés Windows Shell pour les objets du système de fichiers multiples.

Je l'ai déjà compris comment utiliser SHObjectProperties pour un fichier ou un dossier:

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

Quelqu'un peut-il aider?

Était-ce utile?

La solution

Il y a un IDataObject interface et une classe DataObject dans le .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:. Je viens compilé et testé ce et il fonctionne (affiche une boîte de dialogue avec les paramètres d'apparence du dossier)

Autres conseils

Je peut-être vous lire questionnez à tort, mais je pense que vous êtes à la recherche pour les propriétés de fichiers étendus pour les fichiers. explorer à savoir les fenêtres d'ouverture et l'affichage des colonnes comme attributs, propriétaire, droits d'auteur, taille, date de création, etc?

Il y a une API appelée Shell32 GetDetailsOf qui fournira ces informations. Un article à partir du CodeProject À votre santé, John

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top