|
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.
|