Delphiで小さな実行ファイルを作ろう

このエントリーをはてなブックマークに追加
341
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;