Hola:
Mira si lo que quieres es enviar cualquier tecla, o en concreto, teclas alfanuméricas (caracteres). El siguiente código te puede servir:
Código:
//Codigo se toma de la lista de constantes del tipo VK_XXX en windows.pas
procedure EnviaTecla (Destinatario: THandle; Codigo: Integer);
begin
SendMessage (Destinatario, WM_KEYDOWN, Codigo, 0)
end;
procedure EnviaCaracter (Destinatario: THandle; Caracter: Char);
begin
SendMessage (Destinatario, WM_CHAR, Ord(Caracter), 0)
end;
// Ejemplo de uso:
// envía el caracter al Memo1
EnviaCaracter (Memo1.Handle, 'C');
// envía el caracter al form en que estamos
EnviaCaracter (Self.Handle, 'C');
// envía el caracter al form principal de nuestra aplicación
EnviaCaracter (Application.Handle, 'C');
// envía el caracter al contro activo del form principal de nuestra aplicación
EnviaCaracter (Application.ActiveControl.Handle, 'C');
// envía el caracter a todas las aplicaciones activas en Windows
EnviaCaracter (HWND_BROADCAST, 'C');
Si quieres situar el mensaje en la cola de mensajes, sin que se tenga por qué procesar inmediatamente, puedes usar PostMessage en vez de SendMessage.