Win32::GuiTestでnatie APIを使ってキー入力をするときの注意

考えてみればSendKeysとかのhigh level APIを使えばよかったんだけど、Windowsのアプリを移植した関係でwin32のラッパーを使うことにしたのですが。
WM_CHARで文字列を送るとき、そのまま文字として送るとダメなので、ord()で変換する必要がありました。考えてみれば当たり前なんだけど、最初「なんで動かないんだろ」と悩んでしまったのでメモ。

sub put_str{
  my ($hWnd, $str) = @_;
  foreach(split(//, $str)){
    SendMessage($hWnd, WM_CHAR, ord, 0);
  };
}

こんなかんじ。