Я использовал это, чтобы отправить текст в надоедливое всплывающее 3G-приложение без интерфейса, это хак, если бы у нас не было выбора.
procedure TForm1.TypeMessage(Msg: string);
var
CapsOn: boolean;
i: integer;
ch: char;
shift: boolean;
key: short;
begin
CapsOn := (GetKeyState( VK_CAPITAL ) and $1) <> 0;
for i:=1 to length(Msg) do
begin
ch := Msg[i];
ch := UpCase(ch);
if ch <> Msg[i] then
begin
if CapsOn then
begin
keybd_event( VK_SHIFT, 0, 0, 0 );
end;
keybd_event( ord(ch), 0, 0, 0 );
keybd_event( ord(ch), 0, KEYEVENTF_KEYUP, 0 );
if CapsOn then
begin
keybd_event( VK_SHIFT, 0, KEYEVENTF_KEYUP, 0 );
end;
end
else
begin
key := VKKeyScan( ch );
// UpperCase
if ((not CapsOn) and (ch>='A') and (ch <= 'Z')) or
((key and $100) > 0) then
begin
keybd_event( VK_SHIFT, 0, 0, 0 );
end;
keybd_event( key, 0, 0, 0 );
keybd_event( key, 0, KEYEVENTF_KEYUP, 0 );
if ((not CapsOn) and (ch>='A') and (ch <= 'Z')) or
((key and $100) > 0) then
begin
keybd_event( VK_SHIFT, 0, KEYEVENTF_KEYUP, 0 );
end;
end;
end;
end;
надеюсь, что поможет
UPDATE
Отредактировано для разрешения других символов (не буквенных), то есть смещенных цифр! "£ $ и т. Д.