PDA

Ver la Versión Completa : como insertar un icono en el menu de programas


edgusano
03-11-2004, 00:05:21
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
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:


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:


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


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