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.
|