Delphi 非Unicode、非Ascii字符的SendInput

Delphi 非Unicode、非Ascii字符的SendInput,delphi,unicode,sendinput,Delphi,Unicode,Sendinput,我正在编写一个全局钩子过程。使用SendInput发送ascii(

我正在编写一个全局钩子过程。使用SendInput发送ascii(<255)和Unicode字符。到目前为止,它运作良好。 但在我的语言泰米尔语中,有些字符是没有Unicode码点的组合字符。因此,在字体中,有255以上定义的字形。 如何为它们发送虚拟密钥代码?
尽管这些标志符号没有代码点,但它们有类似于u0BAF_0bbf的标志符号名称。第一部分和第二部分是用Unicode定义的。这些名称称为命名序列,由Unicode批准。
代码:

编辑: 是的,我会单独发送每个代码点。每个代码点都有附加的图示符。另外还有一个结合了两者的设计。它在视觉上看起来更好,表现为一个角色。由于它是单独定义的,我认为应该有一种使用sendinput发送的方法
Edit2:
还有一些字符不能机械组合。
编辑3:
测试证明罗布·肯尼迪是正确的。第二个代码点不会以机械方式显示。它被智能地与第一个组合,以获得第三个新的组合雕文。使用字形(名称)编码。我以编程方式执行相同操作的代码干扰了此过程,因此出现了问题
非常感谢

向我们展示您迄今为止开发的代码。您不能单独发送每个代码点吗?谢谢。问题解决了。第三版的解释。Unicode自动处理补充字符。
procedure GenUKey(const vk: integer;  const bUnicode: bool);
var
  kb: TKEYBDINPUT;
  Input: TINPUT;
begin
{keydown}
{  ZeroMemory(@kb,sizeof(kb));}
{  ZeroMemory(@input,sizeof(input));}

{keydown}
  if bUnicode then
  begin
    kb.wVk:= 0;
    kb.wScan:= vk; ;
    kb.dwFlags:= $4;
{ KEYEVENTF_UNICODE=4}
  end
  else
  begin
    kb.wVk:= vk;
    kb.wScan:= 0; ;
    kb.dwFlags:= 0;
  end;
  Input.itype:= INPUT_KEYBOARD;
  Input.ki:= kb;

  SendInput(1, Input,sizeof(Input));

{keyup}
  if bUnicode then
  begin
    kb.wVk:= 0;
    kb.wScan:= vk ;
    kb.dwFlags:= $4 or KEYEVENTF_KEYUP;
{KEYEVENTF_UNICODE=4}
  end
  else
  begin
    kb.wVk:= vk;
    kb.wScan:= 0;
    kb.dwFlags:= KEYEVENTF_KEYUP;
  end;
  Input.itype:= INPUT_KEYBOARD;
  Input.ki:= kb;

  SendInput(1,Input,sizeof(Input));
end;