FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Ejecutar programa desde otro SIN WINEXEC
Hola a todos,
Os explico lo que quiero hacer por si alguien puede ayudarme... Tengo una aplicacion creada con Delphi, se trata de un .EXE... Al arrancar aparece un formulario principal con su menu, etc.... Quiero que, antes de que aparezca este formulario, el usuario se valide indicando su "Codigo de usuario" y su "password"... La solicitud de la validacion quiero hacerla en un proyecto EXE diferente... Si la validacion es correcta se debe de ejecutar el programa principal y el programa de validacion debe de finalizar ya que ya cumplio su funcion de validacion... He probado con WinExec pero para pasarle el codigo de usuario al programa de la aplicacion tengo que hacerlo por parametro y, claro, no es un metodo que aporte demasiada seguridad... Si alguien conoce un sistema para hacerlo... Gracias |
#2
|
||||
|
||||
Si ambos programas están bajo tu control, puedes usar Memory Mapped Files para pasar información de uno a otro. En los foros se ha hablado varias veces de ello.
// Saludos |
#3
|
||||
|
||||
¿Hay alguna razón para pasar la validación a un formulario diferente?
Si te preocupa la seguridad, dividir la aplicación en 2 creo que decremente cláramente este punto, pues tienes que acabar pasando en control de uno a otro de alguna forma y eso es un punto débil.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#4
|
|||
|
|||
No has pensado en hacer el form de la validacion en una DLL?
|
#5
|
||||
|
||||
Al tener dos programas diferentes, de cualquier forma vas a tener que hacer un llamado con WinExec y pasar al menos un parametro (que te indique cual es el memory-mapped-file que vas a utilizar)
Me adhiero a la pregunta de Neftalí..¿cuál es la razón para que sena dos programas separados?, a lo mejor pueda que haya otra alternativa. Te comento un caso similar al que expones, por si te da ideas; Yo tenia una aplicacion principal, que ocasionalmente debia llamar a otras aplicaciones, las cuales solo se ejecutaban si se les enviaba como parametro el usuario y clave adecuadas... (ademas de otros datos), Lo que hice (no conocia los memory-mapped.files de los que habla roman), fue hacer el llamado con winexec, enciando como parametro un codigo, el cual correspondia a un archivo encriptado que despues de leido era borrado. Este archivo ademas del usuario y clave, enviaba el Handle de la aplicacion uno a la dos para luego mantener una conversación entre las dos aplicaciones mediante "SendMessage"... Un saludo, |
#6
|
|||
|
|||
Hola a todos,
Si, Delfino, he pensado en hacerlo usando DLL, de hecho lo estoy implementando asi y parece que podre obtener lo que pretendo... Me explico y asi respondo tambien la cuestion de Neftali: La razon para hacerlo en dos formularios diferentes es que me interesa disponer del siguiente escenario: - La aplicacion es cliente-servidor usando DataSnap via HTTP... - En la parte del cliente se ejecutara un EXE que solamente pedira el usuario y el password y comunicara con el servidor para validarlo... - Tambien en la parte del cliente existira una DLL que "encapsula" toda la aplicacion (formulario principal y todos los formularios etc)... - Si la validacion que realiza el EXE es correcta, se ejecutara la procedure de la DLL que abre el formulario principal de la aplicacion, si la validacion no es correcta nunca llegara a ejecutarse esta llamada dando un mensaje de "Usuario o password incorrectos, vuelva a intentarlo, etc..."... - El EXE que pide el usuario y password, ademas de conectarse con el servidor para validarse, tambien solicitara al servidor si existe una version mas actualizada de la DLL (que encapsula toda la aplicacion) y, si es asi, bajara del servidor la nueva DLL hacia el cliente para actualizar la aplicacion... - Y esto ultimo es el motivo por el que me interesa que el programa EXE de validacion sea diferente de la DLL que encapsula toda la aplicacion, porque si fuera el mismo no podria sustituir el archivo que esta siendo ejecutado, en cambio con este sistema lo que sustituyo es la DLL que aun no se esta ejecutando... No se si me explico... Ahora estoy con el tema del EXE ejecutando la procedure de la DLL que ejecuta la aplicacion y parece que funciona bien... Despues tendre que pelearme con el tema de como bajar la DLL del servidor si debe de actualizarse, aun no se como hacerlo pero indagare... Por lo que se refiere a la privacidad del usuario y contraseña pienso que es una buena opcion ya que tanto el dato de "usuario" y "password" se trasladan desde el EXE de los inputs a la DLL de la aplicacion "internamente" como parametros de una procedure... En principio, cuando la aplicacion ya se esta ejecutando despues de la validacion, no necesito comunicarme con el primer EXE, asi que lo que hago es un "Hide" antes de llamar a la procedure de ejecucion de la aplicacion para ocultarlo i listos... Un saludo y gracias a todos... Josep Mª |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Es posible ejecutar mi aplicacion desde otro programa ? | gaston260 | API de Windows | 5 | 15-03-2011 00:15:30 |
ejecutar otro programa php | srangel | PHP | 3 | 01-04-2005 17:11:27 |
ejecutar un programa dentro de otro | migueilichenco | Varios | 1 | 28-11-2003 20:39:03 |
Ejecutar un programa DENTRO de otro programa | seduerey | Varios | 8 | 12-11-2003 13:56:20 |
Ejecutar algo despues de WinExec u otro | Tonio | Varios | 1 | 03-09-2003 15:46:23 |
|