Migaro. 技術Tips

                       

ミガロ. 製品の技術情報
IBMiの活用に役立つ情報を掲載!


【Delphi】VCLプログラムでのキーボードとマウス操作

DelphiのVCLアプリケーションでWindows APIの「keybd_event」を使うと、
キーボード操作を送ることができます。
たとえば、

keybd_event(VK_TAB, 0, 0, 0); // Tabキーダウン
keybd_event(VK_TAB, 0, KEYEVENTF_KEYUP, 0); // Tabキーアップ

と記述すると、処理の途中でTabキーを押下させることができます。
(押しっぱなしになるのを防ぐため、キーアップも記述しています。)

 

同様に、マウスの操作についても
Windows APIの「mouse_event」「GetCursorPos」「SetCursorPos」を使うと、
マウスをプログラム上から操作することが可能です。

以下にマウス操作ロジックの例を示します。

  // スクリーンの左から100px、上から400pxの位置にカーソルセット
  SetCursorPos(100, 400);

  // 現在のマウス座標から右に100px、下に400pxの位置にカーソル移動
  // (※var宣言で変数 pt: TPoint; を宣言)
  GetCursorPos(pt);                     // マウスの現在地取得
  SetCursorPos(pt.X + 100, pt.Y + 400); // カーソル移動

  // 左クリック
  mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);  // 左マウスダウン
  mouse_event(MOUSEEVENTF_LEFTUP  , 0, 0, 0, 0);  // 左マウスアップ

  // 右クリック
  mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0); // 右マウスダウン
  mouse_event(MOUSEEVENTF_RIGHTUP  , 0, 0, 0, 0); // 右マウスアップ

 
これらを組み合わせると、たとえば
「左マウスダウン→カーソル移動→左マウスアップ」
という操作で、ロジックだけで疑似的にドラッグ&ドロップを行わせるといった応用も可能です。

 

 

(Tipsメルマガ 2021年3月号より)