Con tu permiso federicorl pongo el código planteado en formato más legible
Código Delphi
[-]Procedure TFrm_Teclado.SendKeys(Keys: String);
Var
manejador : THandle;
h: HWND;
Begin
h := FindWindow('Notepad', nil);
if h = 0 then ShowMessage('No se encontro la Aplicacion')
else
begin
SetForegroundWindow(h);
If Keys = 'Enter' then
PostKeyEx32(VK_RETURN, [], False)
Else If Keys = 'Mayus' then
PostKeyEx32(VK_CAPITAL, [], False)
Else If Keys = 'Tab' then
PostKeyEx32(VK_TAB, [], False)
Else If Keys = 'Back' then
PostKeyEx32(VK_BACK, [], False)
Else If Keys = 'Deci' then
PostKeyEx32(VK_DECIMAL, [], False)
Else If Keys = 'Guion' then
PostKeyEx32(VK_SUBTRACT, [], False)
Else If Keys = 'Ñ' then
PostKeyEx32(164, [], False)
Else
PostKeyEx32(Ord(elcorrecto(Keys)), [], False); End
end;
ya envia los teclazos pulsados al notepad pero con el problema de que no he podido enviar ni la eñe ni la coma en el codigo anterior intente hasta enviar el ascii pero no funciono
este codigo lo encontre en otros hilos del foro y es el que estoy usando:
procedure TFrm_Teclado.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;
Comentarte que hay un par de teclados virtuales que si los añades al form que usas te funcionan perfectamente con los diferentes componentes de dicho form (memos, edits, etc) pero no he proado usandolos de un form a otro.