PDA

Ver la Versión Completa : Conocer la carpeta del usuario


Egroc
08-11-2006, 18:14:13
Hola. Tengo un pequeño problema al que no consigo darle respuesta. He buscado en la web y en todos los foros que he encontrado pero no veo la solución.

El problema consiste en cómo saber la ruta de la carpeta del usuario en Windows. Es decir, la ruta tipo "C:\Documents and Settings\NombreUsuario\" en borland delphi.

Creo que se puede hacer con GetEnvironmentVariable pero desconozco el nombre de la misma para obtener este resultado.

Gracias.

oscarnoe
08-11-2006, 18:31:42
La variable de entorno que buscas es USERPROFILE.

Si quieres saber las variables de entorno en tu sistema, ejecuta una linea de comandos y el comando SET a secas.

Espero que te sirva de ayuda.

Oscar Noe

Bicho
08-11-2006, 18:37:42
Hola, a ver si te sirve esto:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ShFolder, ShlObj;

type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
const
SHGFP_TYPE_CURRENT = 0;
var
Buffer: array[0..MAX_PATH] of Char;begin
SHGetFolderPath(0, CSIDL_PERSONAL, 0, SHGFP_TYPE_CURRENT, Buffer); //CSIDL_PERSONAL = es la variable que indica que carpeta queremos obtener
Edit1.Text := Buffer;
end;

end.

Espero te sirva,

Saludos

seoane
08-11-2006, 18:41:36
:mad: Bicho, me ganaste por segundos


const
CSIDL_PROFILE = 40;
SHGFP_TYPE_CURRENT = 0;

function SHGetFolderPath(hwndOwner: HWND;
nFolder: Integer;
hToken: THandle;
dwFlags: DWORD;
pszPath: LPTSTR): HRESULT; stdcall;
external 'Shell32.dll' name 'SHGetFolderPathA';

function GetUserProfile: string;
var
Buffer: array[0..MAX_PATH] of Char;
begin
FillChar(Buffer, SizeOf(Buffer), 0);
SHGetFolderPath(0, CSIDL_PROFILE, 0, SHGFP_TYPE_CURRENT, Buffer);
Result := String(PChar(@Buffer));
end;


:D

Bicho
08-11-2006, 18:46:17
Bicho, me ganaste por segundos

Alguna vez me tocaba, no?
La verdad es que llevaba un buen rato buscando. Creia haberlo visto en algún lado, pero no..., no estaba en ningún sitio.
Luego pensé: fácil, busca el usuario (esa función la tenemos) y luego buscas la carpeta Documents and setting + usuario, pero me dije, es un poco chapuza, algo debe haber.
Así que empecé a buscar y encontré esa función, sólo jugué un poco con las variables y a la segunda me dio lo que buscabamos.

Saludos

Ñuño Martínez
08-11-2006, 18:46:30
Vaya, me habéis ahorrado un viaje, porque una pregunta similar a esta iba a hacerla yo dentro de unos meses para un proyecto que tengo pendiente. :D

Egroc
09-11-2006, 09:09:40
¡Muchas gracias!, ¡es justo lo que necesitaba!!!