路博 主持人简历:[c#] 如何选择一个目录 - 漫步资源站 http://www.manbu.net

来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 18:39:27

[C#] 如何选择一个目录
.Net教程-C#语言

基本思路是利用SHBrowseForFolder 于是有如下代码:

private enum BrowseFlag
{
BIF_RETURNONLYFSDIRS = 0x0001, // For finding a folder to start document searching
BIF_DONTGOBELOWDOMAIN = 0x0002, // For starting the Find Computer
BIF_STATUSTEXT = 0x0004,
BIF_RETURNFSANCESTORS = 0x0008,
BIF_EDITBOX = 0x0010,
BIF_VALIDATE = 0x0020, // insist on valid result (or CANCEL)

BIF_BROWSEFORCOMPUTER = 0x1000, // Browsing for Computers.
BIF_BROWSEFORPRINTER = 0x2000, // Browsing for Printers
BIF_BROWSEINCLUDEFILES= 0x4000 // Browsing for Everything
}

[StructLayout(LayoutKind.Sequential)]
private struct BrowseInfo
{
public IntPtr hwndOwner;
public IntPtr pidlRoot;
[MarshalAs(UnmanagedType.LPTStr)]
public string displayname;
[MarshalAs(UnmanagedType.LPTStr)]
public string title;
public int flags;
public IntPtr callback;
public IntPtr lparam;
}

[DllImport("shell32.dll", CharSet=CharSet.Auto)]
static extern IntPtr SHBrowseForFolder(ref BrowseInfo info);
[DllImport("shell32.dll", CharSet=CharSet.Auto)]
[return : MarshalAs(UnmanagedType.Bool)]
internal extern static bool SHGetPathFromIDList(IntPtr pidl, [MarshalAs(UnmanagedType.LPTStr)] System.Text.StringBuilder pszPath);

public static string BrowseFolder(IWin32Window owner)
{
BrowseInfo info = new BrowseInfo();
info.flags = (int)BrowseFlag.BIF_RETURNONLYFSDIRS
+ (int)BrowseFlag.BIF_STATUSTEXT
+ (int)BrowseFlag.BIF_VALIDATE;
info.hwndOwner = owner.Handle;
IntPtr pidlReturned = SHBrowseForFolder(ref info);

StringBuilder sb = new StringBuilder(260);
SHGetPathFromIDList(pidlReturned, sb);

return sb.ToString();
}


这绝对是最简便的解决办法。虽然没有释放pidlReturned有可能造成少量内存泄漏,但是那么一点内存,谁在乎呢?
[c#] 如何选择一个目录 - 漫步资源站 http://www.manbu.net windows 控件限制用户的基本法门(c#.net 篇) - 漫步资源站 http://www.manbu.net c#中使用sendmessage - 漫步资源站 http://www.manbu.net 一个治疗口腔溃疡的偏方-http://www.tieyun8.net http://www.51paper.net 价值中国http://www.chinavalue.net/ 潜能成功网http://www.qncg.net/ 资源网http://www.lrn.cn/ 酷帝网站目录,网站导航,网站分类目录,中文网站目录 - 酷站目录 www.coodir.c... SSD的使用寿命如何?一块固态硬盘能用多久?http://www.pc-hospital.net/system/01/2009/1220/25341.html http://www.preschool.net.cn/ShowArticle.asp?ArticleID=23838 呼唤的与被呼唤的|http://www.GODoor.net 价值中国http://www.chinavalue.net/Blog/716528.aspx 设备管理体系http://www.skf-fag-nsk.net Bein贝音简谱打印软件|http://www.aspsky.net 十二生肖成语大全 (来自:http://www.51windows.net/) ) http://www.6337711.com - 房产开发中的电梯选择 http://www 以下为电驴资源站或者电驴资源搜索站,按推荐度排名。 1、http://www.s… | T... 揭秘X-37B:快、高、狠--中国军事 http://www.chinaha.net 大成拳随意态发力-武术气功-天行健·气功在线, http://www.qgcn.net/ 新编家常菜的做法800种电子书 http://www.onegreen.net/books/html/2177.html 新编家常菜的做法800种电子书 http://www.onegreen.net/books/html/2177 ASP.NET调用javascript脚本的方法总结 --IT知道网(http://www...