Delphi 无法使用SendInput(Edit1.Text)复制俄文(西里尔文或Unicode)符号

Delphi 无法使用SendInput(Edit1.Text)复制俄文(西里尔文或Unicode)符号,delphi,unicode,character-encoding,delphi-7,sendinput,Delphi,Unicode,Character Encoding,Delphi 7,Sendinput,如何添加Unicode?关于如何使用SendInputit1.Text复制俄语西里尔语符号的任何建议 在本例中,我使用了来自的单位。如果有Delphi6,那么可以在uses子句中省略JclUnicode procedure SendText(ds:string); var TI: TInput; KI: TKeybdInput; i: integer; begin TI.Itype := INPUT_KEYBOARD; for i := 1 to Length(ds) do

如何添加Unicode?关于如何使用SendInputit1.Text复制俄语西里尔语符号的任何建议

在本例中,我使用了来自的单位。如果有Delphi6,那么可以在uses子句中省略JclUnicode

procedure SendText(ds:string);
var
  TI: TInput;
  KI: TKeybdInput;
  i: integer;
begin
  TI.Itype := INPUT_KEYBOARD;
  for i := 1 to Length(ds) do
  begin
    KI.wVk := Ord(UpCase(ds[i]));
    KI.dwFlags := 0;
    TI.ki := KI;
    SendInput(1, TI, SizeOf(TI));
    KI.dwFlags := KEYEVENTF_KEYUP;
    TI.ki := KI;
    SendInput(1, TI, SizeOf(TI));
  end;
end;

在这个例子中,我使用了来自的单位。如果有Delphi6,那么可以在uses子句中省略JclUnicode

procedure SendText(ds:string);
var
  TI: TInput;
  KI: TKeybdInput;
  i: integer;
begin
  TI.Itype := INPUT_KEYBOARD;
  for i := 1 to Length(ds) do
  begin
    KI.wVk := Ord(UpCase(ds[i]));
    KI.dwFlags := 0;
    TI.ki := KI;
    SendInput(1, TI, SizeOf(TI));
    KI.dwFlags := KEYEVENTF_KEYUP;
    TI.ki := KI;
    SendInput(1, TI, SizeOf(TI));
  end;
end;

UI自动化或MSAA是您想要的。MSDN文档非常漂亮obvious@TLama好的,我现在就试试。我必须把*.pas文件放在哪里?让我们看看UI自动化或MSAA是您想要的。MSDN文档非常漂亮obvious@TLama好的,我现在就试试。我必须把*.pas文件放在哪里?让我们发送text'UPPER lower 1234567890/*-+!£$%^&*_+= ąčęėįšųūž'; 导致UER降低1234567890/*-+!XE2中的$%^&*.+=XE2中的$$ĘĖĮŲŽŽ。上半部分中的P等双键不会出现。我们需要释放密钥来生成另一个密钥。请参阅下面的答案。SendText'UPPER lower 1234567890/*-+!£$%^&*_+= ąčęėįšųūž'; 导致UER降低1234567890/*-+!XE2中的$%^&*.+=XE2中的$$ĘĖĮŲŽŽ。上半部分中的P等双键不会出现。我们需要释放密钥来生成另一个密钥。见下面的答案。
uses
  JclUnicode;

procedure SendText(const Value: WideString);
var
  I: Integer;
  S: WideString;
  TI: TInput;
  KI: TKeybdInput;
const
  KEYEVENTF_UNICODE = $0004;
begin
  S := WideUpperCase(Value); 
  TI.Itype := INPUT_KEYBOARD;
  for I := 1 to Length(S) do
  begin
    KI.wVk := 0;
    KI.dwFlags := KEYEVENTF_UNICODE;
    KI.wScan := Ord(S[I]);
    TI.ki := KI;
    SendInput(1, TI, SizeOf(TI));

    // release keys to avoid double key missing (like P in UPPER)
    KI.dwFlags := KEYEVENTF_KEYUP;
    TI.ki := KI;
    SendInput(1, @TI, SizeOf(TI));     
  end;
end;