1.はじめに
だいぶ前に、EXCEL VBAを用いてマウスを動かす記事を見かけました。「数分間に一度、マウスをちょっとだけ動かす」というものですが、何に使うのでしょうか(と書いてみた)。
本記事では、MATLABを用いてマウスを操作する方法についてまとめました。
2.MATLABからマウスの操作はできない
いきなり書いてしまいましたが、MATLABからマウスを操作することはできないようです。
それどころか、特殊な条件(Figureの上)でなければ、マウスの位置情報も得ることはできないということで。
ですので、ここではJavaのお世話になり、この問題を解決することにします。
3.マウスをちょっとだけ動かす方法
JavaにはRobotクラスというものがあって、これを使ってマウスを動かします。
スクリプトは以下のようになります。
% 関係するJavaのクラスをインポートする
import java.awt.Robot;
import java.awt.MouseInfo;
import java.awt.event.*;
robot = Robot();% Robotクラスのインスタンス
pause(5);% 単なる時間かせぎ
a = MouseInfo.getPointerInfo();
b = a.getLocation();% マウス位置を得る
x = b.getX();% マウスのX座標を取得
y = b.getY();% マウスのY座標を取得
for t=1:10
robot.mouseMove(x+100,y);% マウス移動
pause(0.1);
robot.mouseMove(x,y);% マウスを戻す
pause(1);
end
マウス移動はスクリーン座標をもとに指定するので、「現在位置からどれだけ動かす」というようにするため、マウスの現在座標を取得し、それに移動量を加えて制御します。
マウスの位置を動かすのはmouseMoveというメソッドを使っています。
4.マウスで描画する
マウスの位置を動かすmouseMove、マウスのボタンを押すmousePress、マウスのボタンを離すmouseRelease を組み合わせると描画ができます。Paintアプリの上で描画するスクリプトの例を示します。
% 関係するJavaのクラスをインポートする
import java.awt.Robot;
import java.awt.MouseInfo;
import java.awt.event.*;
robot = Robot();% Robotクラスのインスタンス
pause(5);%単なる時間かせぎ
% 描画する四角形の座標
x=[100 200 200 100 100];
y=[300 300 200 200 300];
% 始点にマウスを移動
robot.mouseMove(x(1),y(1));
% マウスの左ボタンを押す
robot.mousePress(InputEvent.BUTTON1_MASK);
for t=2:5
pause(1);
% マウスを動かす
robot.mouseMove(x(t),y(t));
end
% マウスの左ボタンを離す
robot.mouseRelease(InputEvent.BUTTON1_MASK);
これで、下記のように四角形が描画できます。
5.マウスのスクロール
マウスをホイールでスクロールさせるメソッドmouseWheel も使えます。スクリプトの例を示します。
% 関係するJavaのクラスをインポートする
import java.awt.Robot;
import java.awt.MouseInfo;
import java.awt.event.*;
robot = Robot();% Robotクラスのインスタンス
pause(5);% 単なる時間かせぎ
%ペイントのウインドウ上にマウスを移動する
robot.mouseMove(100,100);
for t=1:3
% スクロール(プラスがロールアップ)
robot.mouseWheel(1);
pause(0.5);
end
for t=1:3
% スクロール(ロールダウン)
robot.mouseWheel(-1);
pause(0.5);
end
これでスクロールができるようになります。
6.マウスじゃなくて、キーボードを制御する方法
キーボードを操作する方法については、@HppyCtrlEngnrng さんの記事『MATLABによるChromeの恐竜のアレ』をご参照ください。
以上です。