Enter a few byte characters with keybd_event:
procedure InsertText(text:string); var i:integer; j:integer; ch:byte; str:string; begin i:=1; while i<=Length(text) do begin ch:=byte(text[i]); if Windows.IsDBCSLeadByte(ch) then begin Inc(i); str:=inttostr(MakeWord(byte(text[i]), ch)); keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), 0, 0); j:=1; while j<=Length(str) do begin keybd_event(96+strtoint(str[j]), MapVirtualKey(96+strtoint(str[j]), 0), 0, 0); keybd_event(96+strtoint(str[j]), MapVirtualKey(96+strtoint(str[j]), 0), 2, 0); j:=j+1; end; keybd_event(VK_MENU, MapVirtualKey(VK_MENU, 0), KEYEVENTF_KEYUP, 0); end else begin keybd_event(VkKeyScan(text[i]),0,0,0); keybd_event(VkKeyScan(text[i]),0,2,0); end; Inc(i); end; end;
source share