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.



Creación de un acceso directo Imprimir
Ideas - Delphi

Para crear un acceso directo es necesario crear un objeto COM de la Shell de Windows, obteniendo un puntero a la interfaz IShellLink. Esta interfaz cuenta con una serie de métodos que permiten establecer el destino del acceso directo, los parámetros, el icono, etc. Fijados esos parámetros se obtiene un puntero a la interfaz IPersistFile del mismo objeto, mediante el método QueryInterface, salvando el acceso directo con el método Save. El siguiente fragmento de código efectuaría todo el proceso.

 
function CreaEnlace: boolean;
var
  IShellLinkInterface: IShellLink; // Para acceder a la interfaz IShellLink
  IPersistFileInterface: IPersistFile; // Para acceder a la interfaz IPersistFile
  ResultCode: HResult; // Para obtener los códigos de retorno
  WidePath: Array[0..1024] Of WideChar; // Para componer el camino como cadena UNICODE
begin
  // Obtenemos la interfaz IShellLink
  IShellLinkInterface := IShellLink(CreateCOMObject(CLSID_ShellLink));
  with IShellLinkInterface Do // Establecemos los parámetros del acceso directo
  begin
    SetPath('C:\Config.sys'); // Establecemos el camino
    SetDescription('Archivo de configuración'); // la descripción
  end;
 
  // Convertimos el destino en cadena UNICODE
  StringToWideChar('Mi enlace a Config.sys.lnk', WidePath, 1024);
  // Obtenemos la interfaz IPersistFile
  ResultCode := IShellLinkInterface.QueryInterface(IPersistFile, IPersistFileInterface);
 
  if ResultCode <> S_OK then // Si no fue posible
  begin
    Result := False; // no continuamos
    Exit;
  end;
 
  // Salvamos el acceso directo en el archivo
  ResultCode := IPersistFileInterface.Save(WidePath, True);
end;
 
 

Para que este código funcione correctamente hay que incluir en el programa los módulos ShlObj, ActiveX y ComObj. Yo lo he probado con Delphi 3.0 y el resultado es el esperado, se crea un acceso directo al archivo CONFIG.SYS, salvándose en el archivo LNK 'Mi enlace a Config.sys', que se almacena en la carpeta desde la cual se ejecute el programa.

Comentarios (0)
Para escribir un comentario debes estar registrado