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

问题描述 投票:1回答:2
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;

如何添加Unicode?有关如何使用qazxsw poi复制俄语(西里尔文)符号的任何建议

delphi unicode character-encoding delphi-7 sendinput
2个回答
7
投票

在这个例子中,我使用了SendInput(Edit1.Text);的单位JclUnicode.pas。如果你有Delphi 6,那么你可以省略uses子句中的JclUnicode。

JEDI project

0
投票
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));
  end;
end;
© www.soinside.com 2019 - 2024. All rights reserved.