1

特定の文字(ロシア文字Э)の入力を自動化する必要があります。Spy ++では、対応するメッセージは次のようになります。

WM_CHAR chCharCode: '221' (221) cRepeat:1 ScanCode:28 fExtended:0 fAltDown:0 fRepeat:0 fUp:0

ここに画像の説明を入力してください

このメッセージをプログラムで送信するために、私は次のDelphiコードを使用します。

SendMessage(Self.PassengerGrid, WM_CHAR, WPARAM(221), LPARAM($280001));

Spy ++でコードを実行した結果を調べると、次のメッセージが表示されます。

WM_CHAR chCharCode: '89' (89) cRepeat:1 ScanCode:28 fExtended:0 fAltDown:0 fRepeat:0 fUp:0

wParam私のSendMessage電話に何か問題があるに違いない。

どうすれば修正できますか(がにchCharcode等しくなるように221) `?

アップデート1:

  • このエラーが発生するマシンには、英語とロシア語の2つのキーボード言語があります。
  • 次のコードが

    SendMessage(MyGridHandle、WM_KEYDOWN、VK_OEM_7、LPARAM($ 390000)); SendMessage(MyGridHandle、WM_CHAR、WPARAM(221)、LPARAM($ 280001)); SendMessage(MyGridHandle、WM_KEYUP、VK_OEM_7、LPARAM($ c0390001));

が実行されると、選択した言語(トレイアイコンによる)がロシア語から英語に変わります。

  • WM_CHARで送信する文字が何であれWPARAM、メッセージの文字は常に0x5989)です。

更新2:WM_UNICHAR代わりに使用してもWM_CHAR効果はありません。

4

1 に答える 1

3

文字のUTF-16コードをWPARAM(ロシア語の「Э」の場合は1069)として送信する必要があります。例:

procedure TForm1.Button1Click(Sender: TObject);
begin
  PostMessage(Edit1.Handle, WM_CHAR, WPARAM(1069), LPARAM(0));//$280001));
end;
于 2012-10-18T13:49:08.660 に答える