Ouvrir la fenêtre Windows « Propriétés d'un dossier » par le code

Résolu
Picsonald Messages postés 23 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 7 novembre 2020 - 21 avril 2010 à 15:15
Picsonald Messages postés 23 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 7 novembre 2020 - 22 avril 2010 à 14:46
Salut les gars,

Je développe actuellement un petit utilitaire qui liste dans une grosse grille les différents droits NTFS des répertoires d'un lecteur donné.

J'aimerais qu'au double-clic sur une ligne de la DataGridView, la fenêtre « Propriétés d'un dossier » correspondante s'ouvre. Je parle de la fenêtre Windows qui s'ouvre lorsque, dans l'explorateur, on fait un clic-droit sur un dossier et que l'on clique sur « Propriétés » :


Dans l'idéal, il faudrait que cette fenêtre s'ouvre avec l'onglet « Sécurité » pré-sélectionné, (poru faire gagner du temps aux Users).

En gros je cherche une sorte de ligne de code magique du genre :
// Ce code n'est pas fonctionnel
Directory.OpenSystemInfoForm("C:\TEST", Onglet.Sécurité);


Vous ne pouvez pas savoir comme les résultats Google sont "égarés" lorsque l'on cherche « C# Ouvrir fenêtre propriétés dossier ». On a de tout, mais pas ce que je cherche ^^


Merci d'avance pour votre aide !

2 réponses

Picsonald Messages postés 23 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 7 novembre 2020
22 avril 2010 à 14:46
J'ai pu me procurer cet extrait de code qui fonctionne bien :

        [DllImport("shell32.dll", CharSet = CharSet.Auto)]
        static extern bool ShellExecuteEx(ref SHELLEXECUTEINFO lpExecInfo);
        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
        public struct SHELLEXECUTEINFO
        {
            public int cbSize;
            public uint fMask;
            public IntPtr hwnd;
            [MarshalAs(UnmanagedType.LPTStr)]
            public string lpVerb;
            [MarshalAs(UnmanagedType.LPTStr)]
            public string lpFile;
            [MarshalAs(UnmanagedType.LPTStr)]
            public string lpParameters;
            [MarshalAs(UnmanagedType.LPTStr)]
            public string lpDirectory;
            public int nShow;
            public IntPtr hInstApp;
            public IntPtr lpIDList;
            [MarshalAs(UnmanagedType.LPTStr)]
            public string lpClass;
            public IntPtr hkeyClass;
            public uint dwHotKey;
            public IntPtr hIcon;
            public IntPtr hProcess;
        }

        private const int SW_SHOW = 5;
        private const uint SEE_MASK_INVOKEIDLIST = 12;
        public static void ShowFileProperties(string Filename)
        {
            SHELLEXECUTEINFO info = new SHELLEXECUTEINFO();
            info.cbSize = System.Runtime.InteropServices.Marshal.SizeOf(info);
            info.lpVerb = "properties";
            info.lpFile = Filename;
            info.nShow = SW_SHOW;
            info.fMask = SEE_MASK_INVOKEIDLIST;
            ShellExecuteEx(ref info);

        } 

        private void BtnInfos_Click(object sender, EventArgs e)
        {
            String _path = @"C:\TEST";
            ShowFileProperties(_path); 
        }


C'était pourtant évident ! ... Hum... Non ^^ ! En tout cas ça marche.

Si quelqu'un a une idée pour que l'onglet "Sécurité" soit présélectionné : je suis preneur !

Merci !
3
Picsonald Messages postés 23 Date d'inscription lundi 30 décembre 2002 Statut Membre Dernière intervention 7 novembre 2020
22 avril 2010 à 10:22
Je tente un petit UP, des fois que... :)
0
Rejoignez-nous