Ver Mensaje Individual
  #4  
Antiguo 10-12-2010
FENIXadr FENIXadr is offline
Miembro
 
Registrado: may 2010
Ubicación: Córdoba - Cba. - Argentina
Posts: 104
Reputación: 15
FENIXadr Va por buen camino
Hay otra manera de conocer las carpetas de windows sabiendo su respectiva constante :

CSIDL_DESKTOP for WINDOWS\Desktop
CSIDL_DESKTOPDIRECTORY for WINDOWS\Desktop
CSIDL_FONTS for WINDOWS\FONTS
etc...
etc...

Que al fin y al cabo son del tipo Integer, sabiendo esto, el paso a seguir obvio era hacer un loop cambiendo este entero sin importar como lo llamaron desde mocosoft...

Lo único que necesitamos es un Form con un TMemo y el siguiente código...

Código Delphi [-]

uses shlobj, ActiveX;

function GetSystemPath(Folder: Integer): string;
var
  PIDL: PItemIDList;
  Path: LPSTR;
  AMalloc: IMalloc;
begin
  Path := StrAlloc(MAX_PATH);
  SHGetSpecialFolderLocation(Application.Handle, Folder, PIDL);
  if SHGetPathFromIDList(PIDL, Path) then
    Result := Path
  else
    Result := '';
  SHGetMalloc(AMalloc);
  AMalloc.Free(PIDL);
  StrDispose(Path);
end;



procedure TForm1.FormCreate(Sender: TObject);
var a : Integer;
begin
  Memo1.Clear;
  for a := 0 to 59 do
    Memo1.Lines.Add(IntToStr (a) + #9 + GetSystemPath(a))
end;

y listo... descartamos los valores repetidos y le ponemos el nombre que queremos a las constantes que nos interesan...

espero que esto les sea de utilidad, si se puede comenten...

Última edición por FENIXadr fecha: 10-12-2010 a las 17:29:22. Razón: mejora en el codigo
Responder Con Cita