Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Crear un acceso directo (https://www.clubdelphi.com/foros/showthread.php?t=57654)

_cero_ 24-06-2008 01:47:26

Crear un acceso directo
 
Hola que tal están todos.

Verán estoy haciendo mi propio instalador (sin usar inno setup o algún generador de instaladores), ya está casi terminado, solo me falta saber cómo crear un acceso directo, y aunque he buscado mucho no he logrado hacerlo ya que todas las respuestas en el foro son solo para delphi y no he logrado traducirlo a c++.

Así que si alguno de ustedes pudiera ayudarme, se los agradecería mucho.

_cero_ 24-06-2008 21:31:39

Bueno como ya me estoy tardando lo solucione creando la DLL en Delphi y cargándola en C, funciona pero lo hubiera preferido de otro modo, bueno les digo como lo hice por si se le ofrece a alguien más.

Primero escribí la DLL.
Código Delphi [-]
library accesos;
{Ls}

uses
  SysUtils,
  Windows,
  Messages,
  Dialogs,
  ShlObj,
  ComObj,
  ActiveX,
  StdCtrls,
  ShFolder,
  Classes;

{$R *.res}

procedure crearlink(const Rutlink :string);
var
  CDire: array [0..MAX_PATH-1] of char;
  IObject: IUnknown;
  SLink: IShellLink;
  PFile: IPersistFile;
  desk :string;
begin
  SHGetFolderPath(0,CSIDL_DESKTOPDIRECTORY,0,0,CDire);
  desk:=CDire+'\Requerimientos.lnk';
  IObject:=CreateComObject(CLSID_ShellLink);
  SLink:=IObject as IShellLink;
  PFile:=IObject as IPersistFile;
  with SLink do
  begin
    SetArguments(PChar(''));
    SetDescription(PChar('Sistema Requerimientos'));
    SetPath(PChar(Rutlink));
  end;
  PFile.Save(PWChar(WideString(desk)), FALSE);
end;

exports crearlink;
begin
end.

Después, para llamarla desde una aplicación hecha en C.
Código:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  typedef bool (*TCHA)(char *com1);
  HMODULE hLib = LoadLibrary("accesos.dll");
  if (hLib)
  {
  String olo="C:\\Program Files";
  TCHA createlinkk = (TCHA)GetProcAddress(hLib,"crearlink");
  createlinkk(olo.c_str());
  FreeLibrary(hLib);
  }
}

Bueno nos vemos y gracias.

_cero_ 24-06-2008 21:49:33

Olvide mencionar que crea el acceso directo de la carpeta archivos de programas que se pone en la variable “olo”, el acceso directo se crea en el escritorio con el nombre “Requerimientos” pero puedes cambiar eso escribiendo la ruta y nombre en la variable “desk” de la dll.


La franja horaria es GMT +2. Ahora son las 00:44:26.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi