SelectDirectoryのようにTFormを使わないフォルダ選択関数出来ました
uses shlobj,activex;
function MySelectDirectory(const tit:String):string;
var
BInfo:BROWSEINFO;
RetFolder:PItemIDList ;
var fName:string;
begin
result:='';
setlength(fName,MAX_PATH);
fName[1]:=#0;
BInfo.pidlRoot := nil; //ルートフォルダ名
BInfo.hwndOwner := 0 ; //親ウィンドウのハンドル。
BInfo.pszDisplayName := pChar(fName); //選択されたフォルダ名が返る
BInfo.lpszTitle := pChar(tit);
BInfo.ulFlags := BIF_RETURNONLYFSDIRS;
BInfo.lpfn := nil; //ダイアログプロシージャへのポインタ
BInfo.lParam := 0; //プロシージャを使う時の
RetFolder:= SHBrowseForFolder( BInfo );
Result:=PChar(fName);
if RetFolder<>nil then try
if SHGetPathFromIDList( RetFolder, pChar(fName) ) then
Result:= pChar(fName);
finally CoTaskMemFree( RetFolder ); end;
end;