Algo sobre taskbar y systray

Bueno encontrela web y vi que eres bueno en eso. Por lo menos Por la cantidad de visitas.
Estoy desarrollando un sistema en delphi
Es de cyber café. Y quiero hacer que mi aplicación inicie por medio del system.ini
Bueno hasta ahí todo bien.
Ahora mi aplicación emula un sistema operativo. Ahora deseo saber como puedo hacer para que mi aplicación capture las aplicaciones so las abra en alguna parte de mi formulario las aplicaciones de inicio. O sea las que se minimizan en la barra donde esta el reloj. En sisntesis seria abrir las aplicaciones del msconfig de inicio. En mi aplicación y que tome todas sus propiedades. ¿Comprendes? Lo que quiero hacer es una systray con todos sus iconos y todo eso. Otra cosa también es como hacer para reliazar mi propiea barra de tareas y menu inicio. ¿NO SERA mucho? Bueno espero tener alguna novedad. O si sabes de algún free source o ejemplos de como realizar dicho programa te lo agradeceré.
Me gustaría hacer algo así
www.cibergest.com

1 respuesta

Respuesta
1
En las claves:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run Y HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
Tienes los programas que se ejecutan al iniciar el Windows. La mayoría de ellos son los que luego aparecen en el systray.
Lo de la barra de tareas y menú de inicio se puede modificar simplemente creando accesos directos en la carpeta "C:\Documents and Settings\All Users\Menú Inicio". Modelando esta carpeta tendrás tu menú de inicio personalizado. Esto es válido para Win2000/XP. En Win95/98/Me la ubicación de las carpetas del menú de Inicio es diferente pero el funcionamiento es análogo.
Para crear un acceso directo por programa puedes utilizar la API:
procedure TForm1.Button1Click(Sender: TObject);
procedure CreaLnk( Exe,
Argumentos,
DirTrabajo,
NombreLnk,
DirDestino:string);
var
Objeto: IUnknown;
UnSlink: IShellLink;
FicheroP: IPersistFile;
WFichero: WideString;
begin
Objeto := CreateComObject(CLSID_ShellLink);
UnSlink := Objeto as IShellLink;
FicheroP := Objeto as IPersistFile;
with UnSlink do
begin
SetArguments( PChar(Argumentos) );
SetPath( PChar(Exe) );
SetWorkingDirectory( PChar(DirTrabajo) );
end;
WFichero := DirDestino + '\' + NombreLnk;
FicheroP.Save(PWChar(WFichero),False);
end;
begin
CreaLnk( 'c:\windows\Notepad.exe', {Ejecutable}
'c:\Autoexec.bat', {Argumentos}
'c:\', {Diretorio de trabajo}
'Editar Autoexec.lnk', {Nombre del Acceso Directo}
'c:\windows\escritorio' {Donde hay que crearlo}
);
end;
Para obtener la carpeta donde tienes el menú de Inicio puedes emplear:
procedure TForm1.Button1Click(Sender: TObject);
function ObtienePath(De:String):string;
var
Registro: TRegIniFile;
begin
Registro :=TRegIniFile.Create('Software\MicroSoft\Windows\CurrentVersion\Explorer');
Result:= Registro.ReadString('Shell Folders',De,'');
Registro.Free;
end;
begin
ListBox1.TabWidth:=130;
ListBox1.Columns:=2;
with ListBox1.Items do
begin
Add('Escritorio/Desktop:' +^I+ObtienePath('Desktop'));
Add('Favoritos/Favorites:' +^I+ObtienePath('Favorites'));
Add('Fonts/Fonts:' +^I+ObtienePath('Fonts'));
Add('Mis Documentos/My Documents:' +^I+ObtienePath('Personal'));
Add('Inicio->Programas/Start->Programs:' +^I+ObtienePath('Programs'));
Add('Ficheros Recientes/Recent Files:' +^I+ObtienePath('Recent'));
Add('Menu Inicio/Start Menu:' +^I+ObtienePath('Start Menu'));
Add('Inicio/StartUp:' +^I+ObtienePath('Startup'));
end;
end;
Espero que te ayude en algo. Si quieres algo más concreto, dímelo.
Hola amigo. Gracias por responder en serio. Tu código y explicación me parecido interesante. Pienso que me puede llegar a servir . claro si es que me das una mano.
Cuando incorporo tu código copio y pego.. y cuando lo ejecuto. Me aparece el error remarcado de
IShellLink
Y todas las variables que declaraste.
¿Tengo qué agregar algo en uses?
Por que tal parece que no me reconoce esas variables.
Como te dije poco y nada entiendo de apis. Y esto esta relacionado creo. Así que por eso te pido una alaracion.
Bueno. Y otra que me olvide de formular es. Como puedo hacer para que mi aplicación sea la única que se ejecute en XP.
Yo lo hice en 98 por que tengo el system.ini y modifique la linea [boot]
explorer. Donde la reemplace por la direcconde donde esta mi aplicación.
Entonces cuando inicio la pc de nuevo. Se ejecuta mi aplicación y nada más. No hay explorer no hay nada. Bueno entenderás a lo que me refiero.
Pero en windows xp no tengo un system.ini que cumpla con mi propósito. Me gustaría saber como puedo hacerlo. Seguramente también tiene que ver con el registro. ¿Pero cómo lo haría? Por ejm con dos botones. Uno para hacer que mi aplicación se inicie sin explorer. O sea sea la única que se ejecute y abra. Y otro botón para resstablecer como estaba antes. O sea que inicie windows normalmente.
Bueno. De acuerdo a tu respuesta y aclaración sobre el código enviando anteriormente. Lo probare y te doy una respuesta para ver si me funciono o no. eserp que me puedas ayudar.
De ultima si por ahí no me formule bien. Elevare imágenes de mi aplicación explicadnote un poco mejor de lo que quiero lograr.
Bueno espero no ser denso y que me puedas ayudar. Gracias amigo y estamos en contacto.
mi mail es [email protected]
o mi msn es [email protected]
Un abrazo y de nuevo gracias por tu tiempo
Siento la tardanza en responderte.
La unit que debes poner en el uses es ShlObj. Para ejecutar una aplic. Al iniciar el Windows XP, tienes que crear una nueva entrada en el registro en las claves que te mencioné en el msg anterior.
Pasos:
1.- Botón de Inicio >> Ejecutar >> escribes "regedit" y aceptar
2.- Ponte en la rama "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run"
3.- En el panel derecho, pulsas el botón derecho del ratón, seleccionas nuevo >> valor alfanumérico con nombre el de tu aplic. Y valor la ruta adonde se encuentre tu aplic.
Mi mail es [email protected] por si quieres contactar conmigo por el messenger.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas