FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
alguien tiene la unidad para evitar multiples instancias de Roman
Lo que pasa es que trato de hacer el truco de delphi, para evitar multiples instancias pero no me funciona, me marca un error y no se ejecuta, ya segui los pasos, asi que intento conseguir la Unidad de Roman 'uiapp.pas' y he mirado algunos post anteriores donde la recomienda y explica que hay que hacer para que funcione, pero el link que deja de su pagina ya no existe.
quisiera saber si alguien me podria proporcionar dicha unidad o si es que alguien saber donde la puedo conseguir, de antes manos muchas gracias y es que quiero evitar las multiples instancias de mi programa, para que solo se sejecute una sola vez, saludos y espero alguien me pueda echar la mano con esto. |
#2
|
||||
|
||||
#3
|
|||
|
|||
#4
|
|||
|
|||
ah ok perfecto muchisimas gracias, saludos a la comunidad que siempre ayudan
|
#5
|
||||
|
||||
Román está instanciado y presente siempre, multiple y versátil.
__________________
Estudia y anda en la calle.... que asi serás el doble de listo que los demás... análisis de información análisis y diseño de sistemas Paoti Rios Reséndiz |
#6
|
|||
|
|||
sorry de nuevo :S ya que mire la unit de Roman y seguro que el problema es mio por que no he visto que alguien se queje de la unidad que Roman nos proporciono a todos muy amablemente, espero si alguien me puede ayudar ya que no pude echar a andar esto de evitar multiples instancias, expongo mi problema
este es el codido, haciendo los pequenios cambios como dice en la pagina qu esolo fueron aniadir 2 lineas, Cita:
Aunque no se abra un segundo programa, ( una ventana ), en el administrador de procesos se ve que si esta abierto, y al cerrar el programa, la primer instancia, las otras instancias o veces que intente abrir el programa para verificar que no se abrieran, siguen activas y por ende despues ya no puedo abrir para nada mi aplicacion aunque ya no este 'abierta' por que el proceso esta activo, solo hasta cuando cierro esos procesos puedo abrir de nuevo mi programa, espero alguien me pueda ayudar si no es mucha molestia, por que si me interesa evitar multiples instancias de mi programa. no se si tenga que ver por que mi programa usa MDI y al cerrar el programa pongo este codigo Cita:
y agrego en el drp asi: Cita:
|
#8
|
|||
|
|||
Hola Beginner que tal, estuve checando los archivos, y supongo qu ehay que agregar la unit
JvAppInst a msi proyectos, eh intentado hacer esto, pero no me resulta, si pongo en el dru agregar la unit me generar un error en la unidad JvAppInst, en el apartado que dice: {$I jvcl.inc} me pregunto si es que hay que agregar la unidad o que hay que hacer, por que tambien intente abrir todos los archivos para verificar el contenido pero en algunos me decia que no podia abrirlos: y solo podia abrir JvAppInst.pas pero no se si agregarla como te decia, y ponerle en el dru el agregado algo asi Cita:
Cita:
|
#9
|
||||
|
||||
Cita:
// Saludos |
#10
|
|||
|
|||
problema con las multiples sesiones de la unidad de Roman :(
Espero no estar violando las reglas del foro, mejor decidi hacer el post en un nuevo hilo, ya que lo hice en otro que fue resuelto por otro tema aparte, Ya que mire la unit de Roman y seguro que el problema es mio por que no he visto que alguien se queje de la unidad que Roman nos proporciono a todos muy amablemente, espero si alguien me puede ayudar ya que no pude echar a andar esto de evitar multiples instancias, expongo mi problema
este es el codido, haciendo los pequenios cambios como dice en la pagina que solo fueron aniadir 2 lineas Cita:
[FONT=verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif]lo que me ocurre, es que al ejecutar el exe, me abre normal el programa, pero si intento ejecutar de nuevo mi aplicacion no la abre, eso esta muy bien, el problema es que checo en el Administrador de tareas y me abre 2 procesos de mi programa, uno que es el correcto es el numero uno, y el segundo que no lo abre el programa por que ya esta abierto uno, pero el proceso esta activo y al momento de cerrar mi programa, lo cierro y su proceso tambien se cierra pero el segundo proceso de la instancia del programa que no se abrio, no se cierra, quedandose en memoria y evitando que futuras aplicaciones de mi programa se abran, espero que alguien me pueda ayudar, en la pagina de Roman menciona que hay que cambiar los valores de las constantes, se las cambio pero aun asi me sigue pasando ese error. [/font]Aunque no se abra un segundo programa, ( una ventana ), en el administrador de procesos se ve que si esta abierto, y al cerrar el programa, la primer instancia, las otras instancias o veces que intente abrir el programa para verificar que no se abrieran, siguen activas y por ende despues ya no puedo abrir para nada mi aplicacion aunque ya no este 'abierta' por que el proceso esta activo, solo hasta cuando cierro esos procesos puedo abrir de nuevo mi programa, espero alguien me pueda ayudar si no es mucha molestia, por que si me interesa evitar multiples instancias de mi programa. no se si tenga que ver por que mi programa usa MDI y al cerrar el programa pongo este codigo Cita:
[FONT=verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif]no se si tenga algo que ver las MDI o me falta cerrar de alguna otra forma, espero me puedan ayudar, el codigo de Roman no lo he tocado, mas que en las lineas comentadas que menciono, saludos [/font]y agrego en el drp asi: Cita:
|
#11
|
|||
|
|||
Bueno por si no me entendieron, explicare de esta manera.
La unidad de Roman funciona bien, hace lo que tiene que hacer, por que no me deja abrir mas de 2 programas de forma visual, pero si abre los procesos de cada intento que realice, ejemplo: Aplicacion......................................Administrador de Tareas 1 intento de abrir...........................1 Proceso Activo// Programa se abre todo bien 2 intento de abrir...........................2 Proceso Activo//Programa no abre por que esta abierto ya uno 3 intento de abrir...........................3 Proceso Activo//No se abre por que el programa esta abierto 4 intento abrir...............................4 Proceso Activo//No se abre por que el programa esta abierto ya con estos procesos abiertos y solo viendo un solo programa visual, cuando cierro el proceso #1 que es el programa visual, se cierra el Proceso #1, pero todos los demas procesos de intentos fallidos por abrir el programa que no se lograron tambien se quedan abierto. los procesos #2,#3,#4 se quedan abiertos, estan en memoria, entonces si deseo abrir de nuevo mi programa, ya que esta 'cerrado' (No se ve visualmente), entonces no lo permite, por que los procesos #2,#3,#4 estan abiertos, y solo si los cierros manualmente en el Administrador de Tareas ya puedo abrir de nuevo mi programa verlo, ese es el problema que cada intento que no me cierra, se queda activo, espero alguien me pueda ayudar por que enserio no entiendo que pasa, hago todo lo que dice la pagina de Roman y nada de hecho si no modifico nada de lo que dice y solo pongo la unidad y el codigo asi, poniendola en el uses, y me hace eso, me abre los procesos y despues como decia no puedo abrir la aplicacion si estan activas algunas, espero a ver sido mas claro y que me puedan ayudar, saludos y espero enserio me puedan ayudar, gracias |
#12
|
|||
|
|||
Hola, yo uso este codigo en todos mis programas y funciona bien, sin dejar procesos en memoria:
Código:
public constructor Create(AOwner: TComponent); override; //====================================================================================================================== constructor TfrmMain.Create(AOwner: TComponent); //====================================================================================================================== type PHWND = ^HWND; var createerror: DWORD; FHMapObject: Integer; begin FHMapObject := CreateFileMapping( $FFFFFFFF, // use paging file nil, // no security attributes PAGE_READWRITE, // read/write access 0, // size: high 32-bits 1, // size: low 32-bits PChar('Nombre_de_tu_programa')); // name of map object createerror := GetLastError; if FHMapObject = 0 then begin MessageDlg(Format('CreateFileMapping=$%x', [createerror]), mtError, [mbOK], 0); Exit; end; if GetLastError = ERROR_ALREADY_EXISTS then begin CloseHandle(FHMapObject); MessageDlg('Ya hay una instancia ejecutandose', mtError, [mbOK], 0); Application.Terminate; Halt; end; Inherited; end; Jorge |
#13
|
|||
|
|||
Hola que tal, intentare utilizar el codigo pero lo uso como una unidad aparte y agregandola al proyecto? o lo agrego en todas las unidades, o solo en la unidad que se autogenera al comenzar el programa? sorry por la ignorancia, solo es para saber como utilizarla de la mejor manera. saludos y gracias
|
#14
|
|||
|
|||
Yo la utilizo en el form principal de cada programa, tal cual esta en el ejemplo. Solo definis el constructor y lo implementas.
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
alguien tiene la unidad para evitar multiples instancias de Roman | ivantj24 | Varios | 11 | 29-07-2011 22:48:58 |
como generar ventas multiples (seleccionar multiples items) | userdelphi | Varios | 4 | 30-12-2010 02:52:21 |
Problema con Sesiones Http | yomismo24 | Internet | 0 | 08-04-2008 17:38:33 |
Problema con RaveReports (multiples instancias) | az_jazo | Varios | 2 | 24-05-2006 17:55:03 |
Problema con parámetros o sesiones | __cadetill | PHP | 8 | 17-11-2003 22:31:52 |
|