Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-08-2013
Caroso Caroso is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 44
Poder: 0
Caroso Va por buen camino
Question Enviar parametros de una aplicacion a otra en ejecucion

Buenas noches amigos del foro... tengo una duda que seguro ustedes podrian solucionarme... alguno sabria como hacer para pasarle un parametro a un aplicacion que ya se encuentra en ejecucion?¿ por ejemplo.. tengo este codigo en el inicio de mi form:

Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
var
    i : integer;
 begin
   for i:= 0 to ParamCount do
     Memo1.Lines.Append(ParamStr(i));
end;

mediante el acceso directo del .exe paso dos parametros que me los lista en el memo... el tema es que quiero enviar parametros no cuando arranca el programa si no cuando se esta ejecutando...

si no se entiende la idea la explayo un poco mas... muchas gracias a todos y que terminen lindo el dia
Responder Con Cita
  #2  
Antiguo 23-08-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Caroso.

Revisa si te sirven estos enlaces:
  1. Lamar una aplicación y ejecutar acciones
  2. que en lblmarquee se pueda copiar un renglon

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 23-08-2013
Caroso Caroso is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 44
Poder: 0
Caroso Va por buen camino
Smile prueba

muchas gracias ecfisa.. los revisare y te comento... saludos
Responder Con Cita
  #4  
Antiguo 23-08-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Caroso,

Cita:
Empezado por Caroso
...¿como hacer para pasarle un parámetro a un aplicación que ya se encuentra en ejecución?...
Una opción complementaria a lo sugerido en el Msg #2 es por medio de Sockets en Delphi.

Revisa este código:
Código Delphi [-]
unit UClient;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ScktComp, ExtCtrls;

type
  TClientCmd = class(TForm)
    Edit1: TEdit;
    ClientSocket1: TClientSocket;
    Button1: TButton;
    Button2: TButton;
    RadioGroup1: TRadioGroup;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure OnClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
    procedure OnError(Sender: TObject; Socket: TCustomWinSocket;
      ErrorEvent: TErrorEvent; var ErrorCode: Integer);
    procedure Button2Click(Sender: TObject);
    procedure RadioGroup1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  ClientCmd: TClientCmd;

implementation

{$R *.dfm}

procedure TClientCmd.FormCreate(Sender: TObject);
begin
   ClientSocket1.Port :=  23;
   ClientSocket1.Host :=  '127.0.0.1'; // IP Local, Cliente y Servidor residen en la misma máquina.
   ClientSocket1.Active :=  true;
end;

procedure TClientCmd.OnClose(Sender: TObject; var Action: TCloseAction);
begin
   ClientSocket1.Active := false;
end;

procedure TClientCmd.Button1Click(Sender: TObject);
begin
   if ClientSocket1.Active then
      ClientSocket1.Socket.SendText(Edit1.Text);
end;

procedure TClientCmd.OnError(Sender: TObject; Socket: TCustomWinSocket;
  ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
   if ErrorCode = 10061 then
   begin
      raise Exception.Create('El Servidor No Esta Activo, Pulse "Open Socket" para Reintentar');
      ClientSocket1.Close;
   end;
   ErrorCode := 0
end;

procedure TClientCmd.Button2Click(Sender: TObject);
begin
   ClientSocket1.Open;
end;

procedure TClientCmd.RadioGroup1Click(Sender: TObject);
begin
   Edit1.Text := RadioGroup1.Items.Strings[RadioGroup1.ItemIndex];
end;

end.
El código anterior envía por medio del componente TClientSocket un String (Parámetros, Comandos, Data) a una aplicación que funge como servidor y procesa la data recibida.

Revisa este código:
Código Delphi [-]
unit UServer;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ScktComp, ShellAPI, Sockets;

type
  TServerCmd = class(TForm)
    ServerSocket1: TServerSocket;
    Memo1: TMemo;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure OnClose(Sender: TObject; var Action: TCloseAction);
    procedure OnClientRead(Sender: TObject; Socket: TCustomWinSocket);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
   ServerCmd: TServerCmd;

implementation

{$R *.dfm}

function StringToCaseSelect(Selector : String; CaseList: Array of String): Integer;
var
   pos: integer;
begin
   Result := -1;
   for pos := 0 to Length(CaseList)-1 do
   begin
      if CompareText(Selector, CaseList[pos]) = 0 then
      begin
         Result := pos;
         Break;
      end;
   end;
end;

procedure TServerCmd.FormCreate(Sender: TObject);
begin
   ServerSocket1.Port := 23;
   ServerSocket1.Active := True;
end;

procedure TServerCmd.OnClose(Sender: TObject; var Action: TCloseAction);
begin
   ServerSocket1.Active := false;
end;

procedure TServerCmd.OnClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
   cmd : string;
begin
   cmd := Socket.ReceiveText;
   case StringToCaseSelect(cmd,['calc','notepad','paint','cmd','msg']) of
      0 : ShellExecute(0, nil, 'calc.exe', nil, nil, SW_NORMAL);
      1 : ShellExecute(0, nil, 'notepad.exe', nil, nil, SW_NORMAL);
      2 : ShellExecute(0, nil, 'mspaint.exe', nil, nil, SW_NORMAL);
      3 : ShellExecute(0, nil, 'cmd.exe', nil, nil, SW_NORMAL);
      4 : MessageDlg('Msg',  mtInformation, [mbOK], 0);
   end;
   Memo1.Lines.Add(cmd);
end;

end.
El código anterior recibe por medio del componente TServerSocket la data enviada por una aplicación cliente (Parámetros, Comandos, Data) y procesa la misma.

Los ejemplos están disponibles en el link: http://terawiki.clubdelphi.com/Delph...rverSocket.rar

Revisa estos links:
Cita:
1- Exchanging Data over the Network using Delphi : http://delphi.about.com/od/networking/l/aa112602a.htm

2- TServerSocket and TClientSocket are Missing from Delphi 7 : http://edn.embarcadero.com/article/29768

3- Capitulo 10.2 Programando Sockets en Delphi : http://www.hackerdude.com/courses/delphi/Cap010.2.html
Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 23-08-2013 a las 11:34:37.
Responder Con Cita
  #5  
Antiguo 26-08-2013
Caroso Caroso is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 44
Poder: 0
Caroso Va por buen camino
Red face

Cita:
Empezado por ecfisa Ver Mensaje
Hola Caroso.

Revisa si te sirven estos enlaces:
  1. Lamar una aplicación y ejecutar acciones
  2. que en lblmarquee se pueda copiar un renglon

Saludos
Gracias por tu respuesta ecfisa... eh probado ambos codigos... me interesa el primero Lamar una aplicación y ejecutar acciones... lo descargue eh intente ejecutar... pero no pasaba nada... agrege un Showmessage al codigo receptor para investigar que era lo que sucedia... mediante el showmessage me di cuenta que lo que recibe el receptor es la cadena cortada... es decir en vez de recibir "Abrir" solo recibía "Abr", por lo cual no funcionaba...

ahora te pregunto si me podrias ayudar a solucionarlo... desde ya muchas gracias por tu tiempo...
Responder Con Cita
  #6  
Antiguo 26-08-2013
Caroso Caroso is offline
Miembro
NULL
 
Registrado: jul 2013
Posts: 44
Poder: 0
Caroso Va por buen camino
Tema Cerrado

Ahi lo solucione muy facilmente muchas gracias a todos... saludos
Responder Con Cita
  #7  
Antiguo 26-08-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Caroso Ver Mensaje
Ahi lo solucione muy facilmente muchas gracias a todos... saludos
Me alegro

Ya había descargado los adjuntos para verificarlos, entonces los puedo borrar tranquilo...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Leer parámetros que manda otra aplicación NPIdea API de Windows 2 14-09-2010 11:20:22
Enviar mensaje a otra aplicación vejerf API de Windows 3 24-04-2008 11:27:18
Enviar un click a otra aplicacion. Sergiov API de Windows 2 11-04-2007 14:23:29
Recibir parametros de otra aplicacion en Delphi Coco_jac Varios 1 30-05-2005 17:43:17
Saber si otra aplicacion esta en ejecucion Salomon Varios 3 07-10-2003 18:19:31


La franja horaria es GMT +2. Ahora son las 08:55:28.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi