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);
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;
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;
End;
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);
PostKeyEx32(VK_RETURN, [], False);
PostKeyEx32(Ord('A'), [], False);
PostKeyEx32(VK_HOME, [], True);
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?