Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   como insertar un icono en el menu de programas (https://www.clubdelphi.com/foros/showthread.php?t=15719)

edgusano 03-11-2004 00:05:21

como insertar un icono en el menu de programas
 
Hola a todos.

Mi pregunta es si se puede agregar una nueva entrada en el menu inicio - programas.
Esto es por si digamos que añado otro archivo de ayuda adicional y no se desea que se haga mediante instaldor, se puede hacer desde codigo :confused:

Neftali [Germán.Estévez] 03-11-2004 09:51:25

Cita:

Empezado por edgusano
Mi pregunta es si se puede agregar una nueva entrada en el menu inicio - programas.

Puedes acceder a ese menu a través de la configuración del ordenador para cada usuario. Por ejemplo en un sistema con WinNT o WinXP tienes las configuraciones en:

"c:\Documents and Settings\USUARIO1\Menú Inicio\Programas\"

Por ejemplo para crear una nueva carpeta en el menu de programas, basta con que crees un directorio en ésta ubicación.

Para crear una nueva entrada a un programa puedes crear un acceso directo en esa ubicación.
Puedes utilizar la función siguiente para crear un acceso directro:

Código Delphi [-]
procedure CreateShortCut(ShortCut, Application, Parameters, WorkDir:
string; SW_State: Integer; IconFile: string; IconIndex: Byte);
var
SCObject: IUnknown; 
SCSLink: IShellLink;
SCPFile: IPersistFile;
WFName: WideString;
begin
SCObject := CreateComObject(CLSID_ShellLink);
SCSLink := SCObject as IShellLink;
SCPFile := SCObject as IPersistFile;
SCSLink.SetPath(PChar(Application));
SCSLink.SetArguments(PChar(Parameters));
SCSLink.SetWorkingDirectory(PChar(WorkDir));
SCSLink.SetShowCmd(SW_State);
SCSLink.SetIconLocation(PChar(IconFile), IconIndex);
WFName := ShortCut;
SCPFile.Save(PWChar(WFName), False);
end;

Para utilizarla podrías utilizar un código como éste:

Código Delphi [-]
CreateShortCut('c:\Documents and Settings\USUARIO1\Menú Inicio\Programas\Notepad.lnk', 
'c:\WINNT\NOTEPAD.EXE', '', 'C:\winnt', 0,
'c:\Glyphs_Images_Icons\dialogs\70.ico', 0);

Te creará un acceso directo al notepad con el icono que se le pasa como parámetro.

edgusano 03-11-2004 14:58:59

Gracias Neftalí.

Pero ahora me surge la duda, en sistemas xp y winnt como hago para saber cual es el usuario activo, para solo adicionarle a ese usuario la nueva entrada al menu de inicio.

unreal4u 03-11-2004 15:16:35

la verdad es que la respuesta es haaarto màs fàcil que los post anteriores: hace un instalador. Te recomiendo inno setup; es gratis y muy bueno. Hace todas las cosas "casi" solo; y puedes exportar tus programas en un formato fàcil y universal.


ahora bien, en el caso de que necesites hacerlo en el programa; no tengo idea ... nunca lo he probado, pero busca en la ayuda de delphi por TIBSecurityService.UserInfo; que parece retornar todos los datos del usuario. No lo he probado nunca.

atte. unreal4u

Neftali [Germán.Estévez] 04-11-2004 10:36:51

Cita:

Empezado por unreal4u
...la verdad es que la respuesta es haaarto màs fàcil que los post anteriores: hace un instalador. Te recomiendo inno setup; es gratis y muy bueno. Hace todas las cosas "casi" solo; y puedes exportar tus programas en un formato fàcil y universal...

Todo lo que has dicho es correcto (en cuanto a Inno), pero si lees atentamente el post inicial, verás lo siguiente:

...y no se desea que se haga mediante instaldor...


edgusano 04-11-2004 17:11:34

Gracias Neftalí, por algo hacia la aclaración en el post inicial, ademas, por supuesto que el instaldor de la aplicacion lo hago con el innosetup.

Pero quisiera que me dieras la mano, con eso de saber cual es el usuario activo?.

Neftali [Germán.Estévez] 05-11-2004 10:33:16

Cita:

Empezado por edgusano
Pero quisiera que me dieras la mano, con eso de saber cual es el usuario activo?.

Coloca un botón en un form y utiliza el siguiente código:

Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
 
  //-------------------------------------------------------------
  function CurrentUserName:String;
  var
    u: array[0..127] of Char;
    sz:DWord;
  begin
    sz:=SizeOf(u);
    GetUserName(u,sz);
    Result:=u;
  end;
  //-------------------------------------------------------------
begin
  ShowMessage(CurrentUsername);
end;

edgusano 05-11-2004 15:24:01

ok.

Muchas gracias Neftalí.


La franja horaria es GMT +2. Ahora son las 14:59:55.

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