Ir al contenido


Foto

Pasar parametros entre ejecutables en ejecuccion?


  • Por favor identifícate para responder
5 respuestas en este tema

#1 GlauK

GlauK

    Newbie

  • Miembros
  • Pip
  • 6 mensajes

Escrito 28 abril 2011 - 08:55

Primero pido disculpas si ya hay algun hilo, pero no lo he encontrado, tampoco estoy seguro ke sea el sitio para poner esto, pero bueno ya me comentais.

Mi idea parece muy facil pero no se como se hace.

Yo tengo un Proyecto que se llama Programa.exe i luego he hecho como subprogramas que dependen del mismo exe. Asi si quiero ver los clientes pues desde Programa.exe ejecuto el Cliente.exe con parametros, asi directamente abro el cliente que yo quiero. La conexion a la base de datos la tengo en un ini, asi cada programa tiene la misma configuracion.

Hasta aqui funciona todo ok, no parece dificil, el problema viene cuando Clientes.exe ya esta abierto no quiero abrir Otro, con lo cual si esta abierto me gustaria enviarle los parametros i volver ha ejecutar las fucniones de carga.

De momento la unica solucion que he encontrado es cerrar la aplicacion i volver a abrirla, pero no me gusta la solucion.

No se si deberia ser una aplicacion cliente servidor en la misma maquina...

Bueno a ver si alguien me da un poco de luz!!!

Muchas Gracias


  • 0

#2 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 28 abril 2011 - 12:35

Saludos amigo. En este hilo me resolvieron una duda parecida.

Saludox
  • 0

#3 GlauK

GlauK

    Newbie

  • Miembros
  • Pip
  • 6 mensajes

Escrito 28 abril 2011 - 12:54

En que Hilo?
Me puedes pasar el link?

Muchas Gracias
  • 0

#4 poliburro

poliburro

    Advanced Member

  • Administrador
  • 4.945 mensajes
  • LocationMéxico

Escrito 28 abril 2011 - 02:52

:embarrassed:  Dsiculpa, olvidé pegar el enlace:

http://www.delphiacc...icacion-a-otra/
  • 0

#5 Jose_Augusto

Jose_Augusto

    Member

  • Miembros
  • PipPip
  • 35 mensajes

Escrito 29 abril 2011 - 11:17

Hola a toda la Comunidad.

Quizas en vez de utilizar un archivo de texto o un archivo ini, puedas utilizar el registro de windows.

la unidad es Registry,  el tipo de objeto es TRegistry.

declaras una variable



delphi
  1. Var
  2. Reg : TRegistry;



y sobre codigo guardas variables o parametros que necesites, y cualquier otra aplicacion la puede leer en cualquier momento.

a mi me sirve mucho para guardar las conexiones de bases de datos ADO, cuardo un string o varios, con los datos de servidor, usuario, contraseña, color de las formas, tiempo de reconexion. 

para escribir en el registro hago esto:



delphi
  1. Reg := TRegistry.Create(KEY_WRITE);
  2.       try
  3.         Reg.RootKey := HKEY_LOCAL_MACHINE;
  4.         if Reg.OpenKey('\Software\Empresa\POS\Sucursal\Principal', True) then
  5.         begin
  6.           try
  7.             If EdServidorPrincipal.Text<>'' then
  8.               Reg.WriteString('ServPal', EdServidorPrincipal.Text);
  9.             If EdUsuarioPrincipal.Text<>'' then
  10.               Reg.WriteString('UsPal', EdUsuarioPrincipal.Text);
  11.             If EdContraseniaPrincipal.Text<>'' then
  12.               Reg.WriteString('RevPal', EdContraseniaPrincipal.Text);
  13.             If EdServidorPrincipal.Text<>'' then
  14.               Reg.WriteString('BDDPal', EdBasePrincipal.Text);
  15.           except
  16.             Reg.CloseKey;
  17.             raise;
  18.           end;
  19.           Reg.CloseKey;
  20.         end else
  21.           raise Exception.Create(SysErrorMessage(GetLastError));
  22.       finally
  23.         Reg.Free;
  24.       end;



para leer el registro hago esto:



delphi
  1. Reg3 := nil;
  2.   try
  3.   Reg3 := TRegistry.Create(KEY_QUERY_VALUE);
  4.   Reg3.RootKey :=HKEY_LOCAL_MACHINE;
  5.   if Reg3.OpenKey('\Software\empresa\POS\Sucursal\Sitio',True) then
  6.   begin
  7.       try
  8.         Result := Reg3.ReadString('ServSit');
  9.         If Result <> '' then
  10.         Begin
  11.             ServidorSit:= Result;
  12.         End;
  13.  
  14.         Result := Reg3.ReadString('UsSit');
  15.         If Result <> '' then
  16.         Begin
  17.             sUsuarioSit:= Result;         
  18.         End;
  19.  
  20.         Result := Reg3.ReadString('RevSit');
  21.         If Result <> '' then
  22.         Begin
  23.             ContraseniaSit:= Result;
  24.         End;
  25.         Result := Reg3.ReadString('BDDSit');
  26.         If Result <> '' then
  27.         Begin
  28.             BaseSit:= Result;
  29.         End;
  30.       except
  31.       Begin
  32.       Reg3.CloseKey;     
  33.         raise;
  34.       End;
  35.       end;
  36.       Reg3.CloseKey;
  37.     end else
  38.     Begin     
  39.       raise Exception.Create(SysErrorMessage(GetLastError));
  40.     end
  41.   except
  42.   Begin   
  43.     Reg3.Free;
  44.   end;
  45.     raise;
  46.   end;
  47.   Reg3.Free;


otro uso que le tengo es en un punto de venta, cuando hay muchos clientes en espera, dejo pendiente la ventana de cobro de ese cliente, abro otro ejecutable y este otro ejecutable abre desde el registro que empleado (usuario) esta cobrando en ese momento, asi ya no tiene que iniciar sesión las veces que abra el cobro emergente.

esperando y sea util este ejemplo me despido
  • 0

#6 jorgeu

jorgeu

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 179 mensajes
  • LocationMaracaibo

Escrito 03 mayo 2011 - 08:44

El tema de comunicación entre aplicaciones fue resuelto hace años por técnicas implementadas por el sistema operativo. En Unix se habla de memoria compartida, tuberías, semaforos, etc.
En windows con Delphi se tienen varias opciones. Entre ellas está CORBA o mecanismos del mismo Windows.
De este último tal vez te interese este artículo


http://www.delphi-ce...endmessage.aspx
  • 0




IP.Board spam blocked by CleanTalk.