Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-05-2006
Esau Esau is offline
Miembro
 
Registrado: may 2003
Ubicación: Canto Rey
Posts: 140
Poder: 21
Esau Va por buen camino
Enviar Datos a una Aplicacion

Hola Amigos, hace cuatro dias , me propusieron algo interesenta, Hacer una Aplicacion en Delphi (App01) que llame a otra aplicacion (App02) (la cual no se dispone de codigo fuente ni acepta parametros) enviarle unos datos a la Caja de texto de la Aplicacion (App02) y simular el Click del Boton Aceptar, la aplicacion (App02) debe hacer algo despues de pasarle los datos en la caja de texto y presionar el boton Aceptar... pero todo esto controlado desde la Aplicacion (App01)
he estado viendo alguna documentacion en Internet pero me gustaria algun ejemplo de como efectuar esto y ver si se puede...
Creo que tiene que ver con las funciones SendMessage de Windows... pero no estoy muy seguro , ni se como utilizarlo...
una manito no estaria mal...

Saludos...
Responder Con Cita
  #2  
Antiguo 02-06-2006
liadsoft liadsoft is offline
Miembro
 
Registrado: may 2006
Posts: 12
Poder: 0
liadsoft Va por buen camino
Control de Apps

Amigo, si, es exactamente a través de la función SendMenssage que puedes hacerlo, pero para ello creo que sería apropiado que conozcas de antemano el Ahndle del Botón y de la Caja de Texto a la que quieras escribir. Este handle es un identificador único que se le da a cada ventana en Windows y con el que se reconoce en todo el sistema.

Bueno, si ya tienes estos handles, son los que le pasas de primer parámetro al API SendMessage.

Creo que para enviar los carácteres a la caja de texto prodrías usar el mensage WM_CHAR, y para presionar el botón WM_LBUTTONDOWN, refierete al SDK del Delphi para ver cuales son los parámetros que debes pasar en estos mensages.

Cualquier duda, no me molesta que la envíes al privado.
Responder Con Cita
  #3  
Antiguo 02-06-2006
Esau Esau is offline
Miembro
 
Registrado: may 2003
Ubicación: Canto Rey
Posts: 140
Poder: 21
Esau Va por buen camino
Hola Amigos he encontrado unos hilos interesantes y los he tratado de recopilar.... lo que pretendo hacer es controlar una aplicacion desde otra aplicacion sin que intervenga el usuario...
algo interesante que estoy conociendo es el sistema de mensajes de Windows que hasta hace poco no le habia prestado la importancia del caso, pero de conocerlo se sabra muchas cosas que nos oculta el Windows a simple vista...
primer paso , encontre este pedazo de codigo en uno de los hilos de este foro y lo que hice fue tratar de entenderlo...
Código Delphi [-]
procedure TForm_Principal.PostKeyEx32(key: Word; const shift: TShiftState;
  specialkey: Boolean);
{************************************************************
* Procedure PostKeyEx32
*
* Parameters:
*  key    : virtual keycode of the key to send. For printable
*           keys this is simply the ANSI code (Ord(character)).
*  shift  : state of the modifier keys. This is a set, so you
*           can set several of these keys (shift, control, alt,
*           mouse buttons) in tandem. The TShiftState type is
*           declared in the Classes Unit.
*  specialkey: normally this should be False. Set it to True to
*           specify a key on the numeric keypad, for example.
* Description:
*  Uses keybd_event to manufacture a series of key events matching
*  the passed parameters. The events go to the control with focus.
*  Note that for characters key is always the upper-case version of
*  the character. Sending without any modifier keys will result in
*  a lower-case character, sending it with [ssShift] will result
*  in an upper-case character!
*Created: 17.7.98 by P. Below
************************************************************}
Type
   TShiftKeyInfo = Record
   shift: Byte;
   vkey : Byte;
   End;
   byteset = Set of 0..7;
Const
   shiftkeys: Array [1..3] of TShiftKeyInfo =
       ((shift: Ord(ssCtrl); vkey: VK_CONTROL ),
       (shift: Ord(ssShift); vkey: VK_SHIFT ),
       (shift: Ord(ssAlt); vkey: VK_MENU ));
Var
   flag: DWORD;
   bShift: ByteSet absolute shift;
   i: Integer;
Begin
   For i := 1 To 3 Do Begin
       If shiftkeys[i].shift In bShift Then
           keybd_event( shiftkeys[i].vkey, MapVirtualKey(shiftkeys[i].vkey, 0), 0, 0);
   End; { For }

   If specialkey Then
     flag := KEYEVENTF_EXTENDEDKEY
   Else
     flag := 0;

   keybd_event( key, MapvirtualKey( key, 0 ), flag, 0 );
   flag := flag or KEYEVENTF_KEYUP;
   keybd_event( key, MapvirtualKey( key, 0 ), flag, 0 );

   For i := 3 DownTo 1 Do Begin
     If shiftkeys[i].shift In bShift Then
       keybd_event( shiftkeys[i].vkey, MapVirtualKey(shiftkeys[i].vkey, 0), KEYEVENTF_KEYUP, 0);
   End; { For }
End; { PostKeyEx32 }
Con el procedimiento anterior enviamos todas las teclas que se desean simular y se aplican a la ventana activa...
primero tenemos que saber a que ventana queremos presionarle las teclas, este fragmento de codigo tambien lo obtuve de unos de los hilos de este codigo...
Código Delphi [-]
Var
manejador : THandle;
Begin
hwnd := FindWindow(Nil,'nombre de la ventana');
if hwnd = 0 then ShowMessage('No se encontro la Aplicacion')
else
  begin
    SetForegroundWindow(hwnd);
    PostKeyEx32(VK_TAB, [], False);
    // simulamos la presión de la tecla TAB
    PostKeyEx32(VK_RETURN, [], False);
    // simulamos la presión de la tecla Enter
    PostKeyEx32(Ord('A'), [], False);
    // simulamos la presión de la tecla A
    PostKeyEx32(VK_HOME, [], True);
    // simulamos la presion de la tecla de función Inicio o Home
    // si deseamos podemos pasar tambien la presion de la tecla Control esto seria en el segundo parametro entre los []
  End
End;
de esta forma podemos navegar entre los controles de otra aplicacion como si el usuario lo estuviera haciendo.
Todo el Codigo lo he entrado buscando entre los hilos de este foro , lo que estoy haciendo es agruparlo....
¿que seria de nosotros sin el clubdelphi?
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
Enviar caracteres o pulsaciones de teclas a otra aplicación no Delphi Faust API de Windows 9 28-12-2021 11:43:43
Como enviar un mail desde una aplicacion herodes Varios 3 20-04-2005 17:20:17
Necesito enviar datos de mi aplicacion a una puerta serial..como?? Serbok Varios 1 19-11-2003 22:26:06
Enviar Teclas a una aplicacion JulioCesarPauli API de Windows 2 20-10-2003 19:28:30
Enviar teclas a aplicacion externa El_Lu Varios 2 24-08-2003 02:59:20


La franja horaria es GMT +2. Ahora son las 08:34:19.


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