Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   ¿Como se puede recuperar form oculto con hide? (https://www.clubdelphi.com/foros/showthread.php?t=71258)

lapidus 10-12-2010 00:10:57

¿Como se puede recuperar form oculto con hide?
 
Hola,tengo hecho un programa que se inicia y se oculta al iniciar windows.

Código Delphi [-]

procedure Tform1.Timer1Timer(Sender: TObject);
begin
  Programa;
begin
hide;

end;
end;

procedure Tform1.Regedit (run:byte; Nombre:string);
 var
    Registro:TRegistry;
begin
  Registro:=TRegistry.create;
  Registro.RootKey:=HKEY_LOCAL_MACHINE ;
    case run of
      1: if Registro.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run\',FALSE) then
            Registro.WriteString('Programa', ParamStr(0));
      0: if Registro.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run\',FALSE) then
            Registro.DeleteValue('Programa');
    end;
    Registro.free;
end;
procedure TCheckbox.iniciarconwindowsyocultarClick(Sender: TObject);
begin
  if Iniciarconwindowsyocultar.Checked then
    Regedit(1, 'Programa')

  else
    Regedit(0, 'Programa') ;

begin
if timer1.Enabled = true then
begin
 Timer1.Enabled := iniciarconwindowsyocultar.Checked=true ;
ActivarPrograma.Caption:= 'Activar Programa y Ocultar'
end
else
begin
  Timer1.enabled := iniciarconwindowsyocultar.Checked=true ;
   ActivarPrograma.Caption:= 'Detener Programa'
end;
end;
end;
procedure Tform1.activarcapturaClick(Sender: TObject);
begin
if timer1.Enabled=true then
begin
Timer1.Enabled := false;
ActivarPrograma.Caption:='Activar Programa y Ocultar'
end
else
begin
Timer1.Enabled:=true ;
ActivarPrograma.Caption:='Detener Programa'
end;
end;
procedure Tform1.AveriguarInicio(nombre:string);
var
   Registro : TRegistry ;
begin
   Registro := TRegistry.Create ;
   Registro.RootKey := HKEY_LOCAL_MACHINE;
   Registro.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',true) ;

       if Registro.ValueExists('Programa')= true then
      iniciarconwindowsyocultar.Checked:= true
    else
      iniciarconwindowsyocultar.Checked:= false ;

  Registro.Free;
end;
procedure Tform1.FormCreate(Sender: TObject);

begin
   
  AveriguarInicio('Programa');
end;


El programa funciona correctamente tanto en windows xp como en windows 7.El programa se oculta,tanto al activar el checkbox,como al presionar el button.Tambien hay un MainMenu asociado a cada uno de los botones.¿ Como se puede recuperar el form?.Es decir que vuelva a tener el foco.Gracias

Casimiro Noteví 10-12-2010 00:43:37

Lo contrario de "hide" es "show"

Al González 10-12-2010 06:00:54

¡Epa Casimiro! :)

¿Cuándo llegaste a los 10 mil mensajes? ¿Ya hay hilo de festejo? :eek: :confused: :)

lapidus 10-12-2010 08:04:05

Si,ya lo he probado con 'show',lo he puesto en el formCreate y en el MainMenu he creado 'Mostrar' con Show.Pero no funciona.Yo me refiero a poder visualizarlo con una combinacion de teclas.Gracias.

Casimiro Noteví 10-12-2010 09:47:03

Cita:

Empezado por Al González (Mensaje 384535)
¡Epa Casimiro! :)
¿Cuándo llegaste a los 10 mil mensajes? ¿Ya hay hilo de festejo? :eek: :confused: :)

je, je... ayer mismo :)

Casimiro Noteví 10-12-2010 09:47:59

Cita:

Empezado por lapidus (Mensaje 384541)
Si,ya lo he probado con 'show',lo he puesto en el formCreate y en el MainMenu he creado 'Mostrar' con Show.Pero no funciona.Yo me refiero a poder visualizarlo con una combinacion de teclas.Gracias.

¿Con una combinación de teclas?, ¿y qué problema tienes para hacerlo así?

lapidus 10-12-2010 14:16:11

El problema que tengo es,que cuando el form esta oculto,no funciona ninguna de las combinaciones de teclas,que tengo en el MainMenu.Supongo que es porque el form no tiene el foco.Por ejemplo,para activar el programa tengo puesto en el shortcut ctrl+t.Gracias Casimiro Notevi.

Casimiro Noteví 10-12-2010 14:23:41

Veamos si lo entiendo, el programa está minimizado en el "trayicon", junto al reloj de windows, no?
Y tú puedes estar en otro programa haciendo cualquier cosa.
Y quieres que con la pulsación de una combinación de teclas tu programa se active y muestre.
¿Es eso?

lapidus 10-12-2010 20:34:00

Hola Casimiro Notevi.El programa no está al lado del reloj,sino que esta oculto.Solo se puede ver que se esta ejecutando desde el programador de tareas de windows-procesos.Cuando le das al boton Activar Programa el form
desaparece de la pantalla y se activa el programa(el boton esta asociado al timer).Tambien cuando marcas el checkbox (que tambien esta asociado al timer)lo oculta y lo activa para que al reiniciar windows corra en modo oculto.
Gracias Casimiro Notevi.

Casimiro Noteví 10-12-2010 21:04:20

Echa un vistazo a este tema, creo que es lo que estás buscando.

lapidus 10-12-2010 22:03:16

Gracias por tu tiempo,Casimiro Notevi.Mirare de probarlo durante este fin de semana.

lapidus 12-12-2010 20:16:01

Gracias,Casimiro Notevi.Ha funcionado perfecto.Solo preguntarte otra duda.
Para marcar y desmarcar el CheckBox mediante el MainMenu ¿como se podria hacer?Gracias.

lapidus 12-12-2010 21:11:04

Hola,ya lo he conseguido.He creado en el MainMenu 'Desmarcar Check'
con el siguiente codigo.

Código Delphi [-]
procedure Programa.DesmarcarCheck1Click(Sender: TObject);
begin
if  iniciarconwindowsyocultar.Checked =true  then
begin
    iniciarconwindowsyocultar.Checked := false
end
else
begin
 if   iniciarconwindowsyocultar.Checked = false then
 begin
   iniciarconwindowsyocultar.Checked := true;
end;
end;
end;

Este codigo esta puesto en evento OnClick del 'Desmarcar Check' asociado a la tecla F5.
Gracias por tu ayuda Casimiro Notevi.

Casimiro Noteví 12-12-2010 23:57:47

Todo ese código creo que lo mismo puedes reducirlo a esto:

Código Delphi [-]
procedure Programa.DesmarcarCheck1Click(Sender:TObject);
begin
  iniciarconwindowsyocultar.Checked := not iniciarconwindowsyocultar.Checked;
end;


La franja horaria es GMT +2. Ahora son las 21:50:14.

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