Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Controlar forms y procesos (https://www.clubdelphi.com/foros/showthread.php?t=55500)

vivamotos 18-04-2008 09:53:35

Controlar forms y procesos
 
Saludos,

Estoy creando un programa principal que hace Show() de varios forms, y en un momento determinado me gustaría saber la cantidad de forms activos y cuales son, se puede?.

La otra cosa que quiero es controlar que un programa no se ejecute 2 veces. es decir que si al clicar otra vez al programa ya esta funcionando te avise de que ya existe este programa en ejecución.

Grácias.

dec 18-04-2008 14:34:05

Hola,

Respecto de lo primero cuentas con la variable global "Screen", que te da acceso a todos los formularios, me parece que "visibles" o simplemente "creados", en un momento dado. Y, respecto de lo segundo, acaso lo mejor podría ser que intentaras traducir la unidad UIApp.pas del maestro Román a C++, puesto que está escrita en Delphi.

escafandra 18-04-2008 15:05:34

Yo repasaria la variable TApplication::Components y TApplication::ComponentCount.

Para la segunda cuentión, yo lo resuelvo así:
Código:

//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
  char AppName[] = "Nombre Aplicacion";
  Application->Title = "XXNombre AplicacionXX"; // Cambio momentaneamente el nombre para no encontrarma a mi mismo...
  HWND W = ::FindWindow("TApplication", AppName);  //Busco si la ventana existe...
  Application->Title = AppName;  // Recupero el verdadero nombre de la aplicación
 
  // W!=0 indica que esta abierta. W es el Handle de esa ventana
  if(W){
      // Restauro la ventana de la aplicación que esta ya abierta
      ShowWindow(W, SW_RESTORE);
      SetForegroundWindow(W);
      Application->Terminate();
      return 0;
  }

  // Resto normalmente
  try
  {
      Application->Initialize();
      Application->CreateForm(__classid(TForm1), &Form1);
      Application->Run();
  }
  catch (Exception &exception)
  {
      Application->ShowException(&exception);
  }
  return 0;
}
//---------------------------------------------------------------------------

Saludos.


La franja horaria es GMT +2. Ahora son las 14:54:13.

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