Un lugar de encuentro para los programadores de habla hispana

Un lugar de encuentro para los programadores de habla hispana

Buscar

Entrar

Puedes acceder utilizando tu cuenta de usuario del foro.

Si no dispone de cuenta, puede crear una accediendo al formulario de registro del foro.



Obtener el camino de las carpetas de sistema Imprimir
Ideas - Delphi

Para añadir un elemento al escritorio de Windows, al menú Programas o a la carpeta de Inicio, no hay mas que crear el archivo o acceso directo usando el camino apropiado. Este camino, sin embargo, cambia de una versión a otra de Windows, así como de una lengua a otra.

El registro de Windows dispone de una serie de entradas que permiten recuperar los caminos de todas las carpetas de sistema, pero si no queremos tocar este elemento del sistema, en su lugar podemos usar la función SHGetSpecialFolder. Al llamarla hay que pasar cuatro parámetros: Un HWND con el identificador de la ventana que hace la llamada a la función. Un puntero a un espacio, con al menos MAX_PATH caracteres, en el que se devolverá la unidad y camino de la carpeta solicitada. Una constante indicando la carpeta cuyo camino se desea recuperar. En la tabla de más abajo se indican algunas de estas constantes. Un valor Boolean mediante el cual es posible indicar si la carpeta debe ser creada en caso de no existir

Constantes que identifican las carpetas de sistema

Elemento Constante Valor Escritorio CSIDL_DESKTOP 0 Menú Programas CSIDL_PROGRAMS 2 Menú Inicio CSIDL_STARTMENU 11 Carpeta Inicio CSIDL_STARTUP 7

El siguiente fragmento de código pertenece a un programa Delphi que usa la función SHGetSpecialFolderPath para recuperar el camino correspondiente a la carpeta del menú Inicio, camino que a continuación se muestra en una ventana.

 
interface
 
function SHGetSpecialFolderPath(Handle: HWND; Path: PChar; 
                       Folder: Integer; Create: Bool): HRESULT; StdCall;
 
implementation
 
{$R *.DFM}
 
function SHGetSpecialFolderPath; 
   external'Shell32.DLL' Name 'SHGetSpecialFolderPathA';
 
procedure TForm1.FormCreate(Sender: TObject);
var
   Camino: string;
begin
     SetLength(Camino, MAX_PATH+1);
     SHGetSpecialFolderPath(Handle, PChar(Camino), CSIDL_STARTMENU, False);
     ShowMessage('El menú inicio está en : ' + Camino);
end;
 

NOTA: Para poder utilizar esta función es preciso disponer de la última versión de la librería SHELL32.DLL, ya que SHGetSpecialFolderPath no existía en la versión original de dicho archivo.

Comentarios (0)
Para escribir un comentario debes estar registrado