FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Evitar 2 ejecuciones de mi aplicación. Unidad UIApp
Hola a todo el mundo,
Me he decidido a probar la unidad UIPass de Roman, por cierto muy buena utilidad, y muchas gracias por dejarla disponible. Pero naturalmente he tenido problemas. 1º) la coloqué en la carpeta de mi proyecto 2º) la añadí al .DPR 3º) modifique las cadenas SMutex y SActivar 4º) modifique la función AppWndProc como se indica en el apendice 5º) modifique el procedimiento Registrar según el consejo de Domingo Seoane, y aquí es donde me ocurre el problema: Código:
//mActivar := RegisterWindowMessage(sActivar); //Mutex := CreateMutex(nil, true, sMutex); mActivar := RegisterWindowMessage(PChar(sActivar + Application.ExeName)); // así le añade el Path y el nombre de la aplicación y hace la cadena única Mutex := CreateMutex(nil, true, PChar(sMutex + Application.ExeName)); De momento no voy a utilizar esta unidad en ningún otro sitio, pero me gustaría que funcionase adecuadamente.
__________________
Rafita. |
#2
|
||||
|
||||
Hola,
Se me ocurre que "Application.ExeName" contiene caracteres como las "barras invertidas" de la ruta al archivo, de modo que acaso esto impida a "RegisterWindowMessage()" hacer su trabajo. Tal vez habría que sustituir esas "barras invertidas" por otros caracteres, ¿no lo hace así Seoane? Acaso utiliza algún "hash" de la cadena en cuestión, de modo que siga siendo única, pero, no contenga caracteres especiales... ¿seguro que no hace algo así Seoane? Lo digo porque si no lo hace así es porque todo esto que digo yo sobre los caracteres especiales en realidad no aplica en este caso, y debería funcionar tal como intentas hacerlo. |
#3
|
|||
|
|||
Muy buenas Dec, gracias por responder.
Tienes razón, son las barras invertidas o algo así, el caso es que con Código:
mActivar := RegisterWindowMessage(PChar(sActivar + 'Inspeccion.exe')); // así le añade el nombre de la aplicación y hace la cadena única Mutex := CreateMutex(nil, true, PChar(sMutex + 'Inspeccion.exe')); Muchas gracias
__________________
Rafita. |
#4
|
||||
|
||||
Hola,
Hombre, siempre puedes hacer uso de alguna función que sustituya las "barras invertidas" (tal vez espacios en blanco y algún que otro caracterer...) para intentar evitar los problemas que mencionas. O, directamente, obtener el MD5 de la cadena en cuestión, como muestra el mismo Seoane en un truco del ClubDelphi, y utilizar este MD5, lo que también te evitaría los potenciales problemas que dices. |
#5
|
|||
|
|||
Hola Dec,
La próxima vez que utilice esta unidad lo haré como dices. Por cierto, quería poner el nombre correcto de la unidad: UIApp por si alguien realiza una búsqueda en los foros que le aparezca. saludos
__________________
Rafita. |
#6
|
||||
|
||||
Hola,
Si te refieres a editar el título dalo por hecho. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Modificación a UIApp de Roman | gluglu | Varios | 0 | 05-10-2007 18:02:28 |
Cambiar el formulario principal de la aplicación | ator15 | Varios | 5 | 25-09-2007 03:31:37 |
error al probar aplicación | Mc_Hacks | Conexión con bases de datos | 5 | 12-12-2006 19:00:13 |
uiapp | liriko | OOP | 1 | 11-01-2006 18:10:35 |
problema con UIApp | liriko | OOP | 4 | 16-12-2005 16:18:33 |
|