Directory browser

Description

Ce petit programme permet d'utiliser l'API Windows : SHBrowseForFolder afin de récupérer un répertoire tel qu'on le ferait avec un OpenFileDialog.

J'ai donc nommé ce composant : OpenDirDialog.

il s'utilise comme suit :
OpenDirDialog odd = new OpenDirDialog();
odd.Show(base.Handle,"Sélectionnez un répertoire ...");
MessageBox.Show(odd.Directory); // par exemple pour l'affichage

Source / Exemple :


...
[DllImport("shell32.dll")]
private static extern int SHGetPathFromIDListA(int pidl, byte[] path);

[DllImport("shell32.dll")]
private static extern int SHBrowseForFolderA(ref BROWSEINFO browseinfo);

[DllImport("ole32.dll")]
private static extern void CoTaskMemFree(int pv);

...

public void Show(IntPtr hWnd, string title)
{
	BROWSEINFO bi = new BROWSEINFO();
	int pidl;
	byte[] path = new byte[260];

	bi.hOwner = hWnd;
	bi.pidlRoot = 0;
	bi.title = title;
	bi.flags = 1;

	pidl = SHBrowseForFolderA(ref bi);
	SHGetPathFromIDListA(pidl,path);
	this.directory = Encoding.ASCII.GetString(path);

	CoTaskMemFree(pidl);
}
...

Conclusion :


L'api Windows doit être utilisée le moins possible.
Je n'ai pas trouver de composant faisant ceci donc voilà, s'il en existe dîtes le moi :)

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.