Ver Mensaje Individual
  #8  
Antiguo 27-03-2009
JuanErasmo JuanErasmo is offline
Miembro
 
Registrado: ago 2005
Posts: 544
Reputación: 19
JuanErasmo Va por buen camino
el código inicial , lee registro y verifica si hay otra instancia corriendo.

Código:
#include <vcl.h>
#pragma hdrstop

#include "control.h"
#include "presentacion.h"
#include "varios.h"
//---------------------------------------------------------------------------
USEFORM("videos.cpp", Form_Videos);
USEFORM("source code\about\about.cpp", Form_about);
USEFORM("control.cpp", Form_control);
USEFORM("DBagenda.cpp", Form_DBagenda);
USEFORM("entrada.cpp", Form_entrada);
USEFORM("herramientas.cpp", Form_herramientas);
USEFORM("imagenes.cpp", Form_Imagenes);
USEFORM("Login.cpp", FormLogin);
USEFORM("fondo.cpp", FormFondo);
USEFORM("mensajes.cpp", FormMensajes);
USEFORM("Frame_HistoriaLista.cpp", FrameHistoriaLista); /* TFrame: File Type */
USEFORMNS("C:\Archivos de programa\FastReport253\FastReport\source\FR_View.pas", Fr_view, frPreviewForm);
USEFORMNS("C:\Archivos de programa\FastReport253\FastReport\source\fr_desgn.pas", Fr_desgn, frDesignerForm);
USEFORM("encripcion.cpp", Form_Encripcion);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE OtraInstancia, LPSTR, int)
{
//    PRIORIDAD ALTA A LA APLICACIÓN
//   SetPriorityClass (GetCurrentProcess(), REALTIME_PRIORITY_CLASS);
//   SetThreadPriority(GetCurrentThread(),  THREAD_PRIORITY_TIME_CRITICAL);
   LogAgregar(-1, 0, "Iniciando nueva sesion", TLogTipoInformacion);
   //REVISA SI YA HAY OTRA INSTANCIA DEL PROGRAMA CORRIENDO
    static char szMutexName[] = "MyMutexAplicacion"; // Use a unique name!
    WNDCLASS wc;
    HWND hwnd;
    MSG msg;
    HANDLE hMutex;
    hMutex = CreateMutex (NULL, FALSE, szMutexName);
    if ((hMutex != NULL) && (GetLastError () == ERROR_ALREADY_EXISTS))
    {
         MessageBeep(MB_ICONQUESTION);
         LogAgregar(-1, 0, "Ya se ha iniciado otra sesión de Aplicacion", TLogTipoConfirmacion);
         int YaExiste=Application->MessageBox("Ya se ha iniciado otra sesión de Aplicacion\n\nSe recomienda cerrar esta sesion.  Desea continuar abriendo esta sesion?", "Aplicacion", MB_YESNO | MB_ICONQUESTION | MB_DEFBUTTON2);
         if(YaExiste==IDNO) {
            LogAgregar(-1, 0, "Cancelado el inicio de Aplicacion", TLogTipoInformacion);
            CloseHandle (hMutex);
            return -1;
        }else{
            LogAgregar(-1, 0, "Iniciando doble sesión", TLogTipoInformacion);
        }
    }

   try
   {
     Application->Initialize();
     Application->Title = "Aplicacion";
     Application->HelpFile = "C:\\Application\\ayuda\\Aplicacion1.HLP";
       Application->CreateForm(__classid(TForm_control), &Form_control);
                 Application->CreateForm(__classid(TForm_presentacion), &Form_presentacion);
                 Application->CreateForm(__classid(TFormMensajes), &FormMensajes);
                 Application->CreateForm(__classid(TForm_about), &Form_about);
                 Application->CreateForm(__classid(TForm_DBagenda), &Form_DBagenda);
                 
                                                  Application->CreateForm(__classid(TForm_herramientas), &Form_herramientas);
                 Application->CreateForm(__classid(TForm_Imagenes), &Form_Imagenes);
                                Application->CreateForm(__classid(TForm_entrada), &Form_entrada);
                                Application->CreateForm(__classid(TFormFondo), &FormFondo);
                 Application->CreateForm(__classid(TFormLogin), &FormLogin);
                 Application->CreateForm(__classid(TForm_Encripcion), &Form_Encripcion);
                 Application->Run();
    // }
     }
   catch (Exception &exception)
   {
       LogAgregar(-1, 0, "Excepcion 1: "+exception.Message, TLogTipoError);
       Application->ShowException(&exception);
       Application->Terminate();     
   }
   catch (...)
   {
       try
       {
          throw Exception("");
       }
       catch (Exception &exception)
       {
          LogAgregar(-1, 0, "Excepcion 2: "+exception.Message, TLogTipoError);
          Application->ShowException(&exception);
          Application->Terminate();         }
   }
   return 0;
}
Gracias,,,,,,,les agradecería mucho su colaboración.

Última edición por JuanErasmo fecha: 27-03-2009 a las 14:24:32.
Responder Con Cita