Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-11-2009
duranguenze duranguenze is offline
Miembro
 
Registrado: nov 2009
Posts: 17
Poder: 0
duranguenze Va por buen camino
Maximizar una aplicacion abierta

Saludos, he estado viendo como evitar que se abra una aplicacion, lo encontre mediante api de window, pero ahora me encuentro con el inconveniente de que si la aplicacion se encuentra minimizada esta no se muestra, he podido hacer que se pase adelante, mediante un truco de estado, pero quisiera saber como poder maximizarla desde delphi 7 que es donde me permiten trabajar. Buscando en las api no he encontrado la respuesta, solo referencias a como deberia de ser pero nada en concreto...

Gracias de ante mano.
Responder Con Cita
  #2  
Antiguo 11-11-2009
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.202
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Código Delphi [-]
ShowWindow(Handle, SW_MAXIMIZE);

Saludos.
Responder Con Cita
  #3  
Antiguo 11-11-2009
duranguenze duranguenze is offline
Miembro
 
Registrado: nov 2009
Posts: 17
Poder: 0
duranguenze Va por buen camino
Agradezco la respuesta, pero al parecer no se puede de esa manera, complementando, he hecho que se muestre desde la aplicación anterior, por lo que podria ser fácil si tan solo existiera algo como "application.windowRestore" ya probé con application.restore y no me funciona.
el siguiente código es el que encontré pero solo me funciona el primer procedimiento que es el que uso para pasarlo hasta adelante.
Código Delphi [-]
procedure PonerDelante(Handle: THandle);
var
  FgThreadId  : DWORD;
  AppThreadId : DWORD;
begin
  FgThreadId  := GetWindowThreadProcessId(GetForegroundWindow, nil);
  AppThreadId := GetWindowThreadProcessId(Handle, nil);
  AttachThreadInput(AppThreadId, FgThreadId, true);
  SetForegroundWindow(Handle);
  AttachThreadInput(AppThreadId, FgThreadId, false);
end;

procedure MostrarVentana(WindowName:PChar);
var H: THandle;
begin
  H:= FindWindow(nil,WindowName);//Buscamos el nombre completo que tiene en la barra
  if(H>0) then begin
    if IsIconic(h)then
      ShowWindow(H,SW_RESTORE);
    SetForegroundWindow(H);
    PonerDelante(h);//ShowWindow(h,SW_NORMAL);//La mostramos
  end;
end;

Última edición por duranguenze fecha: 11-11-2009 a las 04:18:45.
Responder Con Cita
  #4  
Antiguo 11-11-2009
Avatar de Axel_Tech
Axel_Tech Axel_Tech is offline
Miembro
 
Registrado: nov 2008
Ubicación: lugar en que está ubicado algo.
Posts: 85
Poder: 16
Axel_Tech Va por buen camino
A ver esto:
Código Delphi [-]
Form1.WindowState := wsMaximized;
Responder Con Cita
  #5  
Antiguo 11-11-2009
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.202
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por duranguenze Ver Mensaje
...he estado viendo como evitar que se abra una aplicacion, lo encontre mediante api de window, pero ahora me encuentro con el inconveniente de que si la aplicacion se encuentra minimizada esta no se muestra...
Tal vez deberíamos empezar por el principio. Explícate ¿que es eso de evitar que la aplicación se abra y que luego no puedes mostrar la ventata?. Realmente no se que has hecho con esa aplicación ni que quieres hacer.

Saludos.
Responder Con Cita
  #6  
Antiguo 11-11-2009
duranguenze duranguenze is offline
Miembro
 
Registrado: nov 2009
Posts: 17
Poder: 0
duranguenze Va por buen camino
Es una aplicación de reloj checador lo cual debe haber solo una instancia, ya que usa una web cam como cerficacion de que si checo la persona, se implemento este sistema en vez de una huella digital ya que los trabajadores salian con las manos tan maltratadas que no lo reconocia el lector de huellas, el problema es que al estar minimizada los trabajadores quieren abrir el programa y entonces la cámara no esta disponible, y no checan bien, le puse un codigo para que solo tubiese una instancia y se cierra, ahora lo que falta es que se maximize desde la barra de herramientas, cosa que no he logrado...

No se a que se deba pero lo que he intentado no me ha funcionado.

Última edición por duranguenze fecha: 11-11-2009 a las 20:32:26.
Responder Con Cita
  #7  
Antiguo 11-11-2009
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.202
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Te muestro como resolví ese problema en C (Builder):

Código:
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
   char AppName[] = "MI_Aplicacion";
   Application->Title = "XXMI_AplicacionXX";
   HWND W = ::FindWindow("TApplication", AppName);
   HWND H = ::FindWindow("TApplication", Application->Title.c_str());
   Application->Title = AppName;
   if(W){
      ShowWindow(W, SW_RESTORE);
      SetForegroundWindow(W);
      Application->Terminate();
      return 0;
   }

   try
   {
       Application->Initialize();
       Application->CreateForm(__classid(TForm1), &Form1);
       Application->Run();
   }
   catch (Exception &exception)
   {
       Application->ShowException(&exception);
   }
   return 0;
}
//---------------------------------------------------------------------------
Si se intenta volver a ejecutar lo que hace es mostrar la ventana de la aplicación que ya estaba abierta cerrando la nueva que se está creando. Nunca me dio problemas para maximizar desde la barra de tareas.

Saludos.
Responder Con Cita
  #8  
Antiguo 11-11-2009
duranguenze duranguenze is offline
Miembro
 
Registrado: nov 2009
Posts: 17
Poder: 0
duranguenze Va por buen camino
Tal ves sea que el Delphi 7 me odia desde que lo conosco, no he tenido problemas con algun otro lenguaje, pero con D7 hasta errores que ni en la vida sabia que podian existir.

El ejemplo que pones, es el que intente poner en un inicio, pero aun nada, no se que este haciendo mal, pero no me funciona, ni desde la instancia que esta activa ni en la nueva.
Responder Con Cita
  #9  
Antiguo 13-11-2009
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.202
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Al parecer Club Delphi debe seguir teniendo problemas. Dos mensajes que dejé ayer, en diferentes temas, han desaparecido.

Voy a retomar este hilo donde se amputó publicando un ejemplo en delphi:
Código Delphi [-]
program Project1;

uses
  Windows, Forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

var
 W : Integer;
begin
  Application.Title:= 'XXMi_AplicacionXX';
  W:= Windows.FindWindow(PCHAR('TApplication'), 'Mi_Aplicacion');

  Application.Title:= 'Mi_Aplicacion';

  if(W<>0) then
  begin
    ShowWindow(W, SW_RESTORE);
    SetForegroundWindow(W);
    Application.Terminate;
  end else;
  begin
    Application.Initialize;
    Application.CreateForm(TForm1, Form1);
    Application.Run;
  end;
end.

Saludos.
Responder Con Cita
  #10  
Antiguo 13-11-2009
duranguenze duranguenze is offline
Miembro
 
Registrado: nov 2009
Posts: 17
Poder: 0
duranguenze Va por buen camino
O te están baneando por alguna razón... hay que indagar un poco para ver si es por casualidad o por otra cosa.
Responder Con Cita
  #11  
Antiguo 13-11-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Al parecer, algo no había quedado bien en la instalación del servidor y Emilio tuvo que restaurarlo ayer o antier por la noche (no recuerdo bien) y es posible que debido a eso se hayan perdido algunos mensajes. En todo caso, lamento que se haya perdido algo, pero desde luego no es un asunto de amputar hilos no de censurar a nadie.

// Saludos
Responder Con Cita
  #12  
Antiguo 13-11-2009
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.202
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Tranquilo, roman, nunca pensé en otra cosa que no fueran coletazos del ultimo terremoto .

Es una lástima que se pierda información. Un día es perfectamente recuperable por los propios miembros. Seis meses es mucho mas complejo, pero no se va a morir el club por eso.

Gracias roman por tu intervención y aclaración.

Saludos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
BBDD Firebird Abierta madmai Conexión con bases de datos 9 22-03-2009 07:51:08
Carta abierta a Borland SMTZ Debates 287 13-06-2007 21:55:49
Cuantas veces está abierta una aplicación pache Varios 8 02-03-2007 19:04:16
Combinación de teclas para maximizar aplicación residente socger Varios 2 20-02-2007 14:57:44
Maximizar otra Aplicación Caro API de Windows 2 05-12-2005 14:11:15


La franja horaria es GMT +2. Ahora son las 01:06:47.


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
Copyright 1996-2007 Club Delphi