FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
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; } Última edición por JuanErasmo fecha: 27-03-2009 a las 14:24:32. |
#2
|
|||
|
|||
Hola y gracias,
Podrá ser la función utilizada para averiguar si esta corriendo otra instancia del mismo ejecutable??? De verdad, en usuario administrador me trabaja de maravilla, pero luego, " la aplicacion no se ha inicializado correctamente 0c0000000142" Gracias |
#3
|
|||
|
|||
Cuando le doy click derecho ejecutar como... y selecciono el administrador, si funciona bien,
se me ocurre entonces, crear un ejecutable que llame al programa principal, pero que por código, le pase los parámetros de "ejecutar como..." para que el usuario no tenga que conocer las contraseñas de administrador, sino que estas esten includias como parámetro de un ShellExecute o algo asi,,,,, es posible hacerlo??? Gracias. |
#4
|
||||
|
||||
¿dónde escribe la función "LogAgregar"?, ¿en un archivo?, ¿en el registro?
__________________
|
#5
|
|||
|
|||
En la funcion se le cambia el separador de fecha
tiene algo que ver? |
#6
|
|||
|
|||
La aplicación utiliza MDIForms, es decir, child forms.
tiene algo que ver? gracias |
#7
|
||||
|
||||
JuanErasmo, es dificil acertar en la causa con los datos que nos das, se me ocurre que podria suceder por codigo no escrito por ti. Lo que te aconsejo es ir comentando trozos de codigo, funciones, etc... asi con prueba & error encontraras la causa.
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Permisos de aplicacion Net | MaMu | .NET | 10 | 15-08-2008 13:56:30 |
Al compilar crea un ejecutable que solo funciona en mi PC, necesita instalacion?¿ | gerardorom | C++ Builder | 4 | 13-01-2008 13:09:26 |
Dar permisos a usuarios desde la aplicacion. | Gaim2205 | Conexión con bases de datos | 11 | 29-09-2007 14:32:35 |
La aplicacion no me funciona | ivanloco | Firebird e Interbase | 2 | 08-06-2007 20:33:26 |
Aplicación web no funciona.. | ElCherchu | Internet | 1 | 18-04-2006 01:54:50 |
|