function selectdir: string; //如果取消取返回为空,否则返回选中的路径 var Info: TBrowseInfo; IDList: pItemIDList; Buffer: PChar; begin result := ''; Buffer := StrAlloc(MAX_PATH); with Info do begin hwndOwner := GetActiveWindow; //少了这句,浏览目录选择框不会跳出来的 pidlRoot := nil; //起始位置,缺省为我的电脑 pszDisplayName := Buffer; //用于存放选择目录的指针 lpszTitle := '请选择路径:'; //对话框提示信息 ulFlags := BIF_RETURNONLYFSDIRS or BIF_BROWSEINCLUDEFILES; //选择参数,此处表示显示目录和文件,如果只显示目录则将后一个去掉即可 lpfn := nil; //指定回调函数指针 lParam := 0; //传递给回调函数参数 IDList := SHBrowseForFolder(Info); //读取目录信息 end; if IDList <> nil then begin SHGetPathFromIDList(IDList, Buffer); //将目录信息转化为路径字符串 result := strpas(Buffer); end; StrDispose(buffer); end;