任意のキーを押している間、マウスの左クリックを連打させる方法

クリックを連打するのも面倒なので自動化させましょう。

連打のONとOFFを簡単に切り替えられるよう、任煮のキーを押している間だけ連打させるようにします。

スクリプトの中身で難しいことはしていません。

任意のキーが押されているか監視し、押されている間はクリックを連打させるだけです。

使い勝手が良くなるよう、任意のキーを変更させるのもいいでしょう。

 

任意のキーを押している間、マウスの左クリックを連打させるサンプル

Shiftキーでマウスの左クリックを連打します。

ESCキーで終了するようにしました。

PRINT "ESCキーで終了します"
WHILE !GETKEYSTATE(VK_ESC)
 WHILE GETKEYSTATE(VK_SHIFT) // Shiftキーで連打開始
  BTN(LEFT, CLICK)
  SLEEP(0.1) // 連打する間隔を指定(秒)
 WEND
 SLEEP(0.1)
WEND

 

他に使われそうな仮想キーコード

VK_ALT
VK_CTRL
VK_RCTRL

マウス座標を相対座標で指定する方法

マウス座標を相対座標で指定するためにはMOUSEORG関数を利用します。

デフォルトでは指定したウィンドウの位置を基準に相対座標で指定できるのでレイアウトが固定されたウィンドウでマウス操作を自動化させたい場合に役立ちます。

しかし無理に相対座標を扱う必要もないので本当に必要か一度考えてみてください。

 

マウス座標を相対座標で指定するサンプル

id = EXEC("notepad.exe") // メモ帳を起動させる
MOUSEORG(id) // メモ帳を基準にする
MMV(0, 0) // 相対座標の0,0にマウスカーソルを移動

 

MOUSEORG関数リファレンス

MOUSEORG関数のリファレンスをマニュアルから転載します。

MOUSEORG( ID, [基準指定, 画面取得指定 ] )
引数
 ID: Windowを識別するID
 基準指定:
   0 (デフォルト): ウィンドウ位置
   MORG_CLIENT (1): クライアント領域の位置を基準にする
   MORG_DIRECT (2): 指定ウィンドウ(オブジェクト)へマウス、キー情報を直接送る(第1引数はウィンドウIDでもハンドル値でも可)
 画面取得指定: PEEKCOLOR()、CHKIMG()関数にて
   0 (デフォルト): 指定アプリがフォアグランドかバックグランドかにより検索画面の取得方法を変更
   MORG_FORE   : フォアグランドとして可視画面(デスクトップ)を検索画面とする
   MORG_BACK   : バックグランドとしてアプリより画面を取得して検索画面とする(他の画面がオーバーラップしていてもOK)

 ※ 以降のMMV()、BTN()、PEEKCOLOR()、CHKIMG()関数の座標を指定ウィンドウを基準にしたものにする
 ※ 基準指定にて MORG_DIRECTが指定された場合は KBD()、MMV()、BTN()関数の情報は直接ウィンドウ(オブジェクト)へ送る
 ※ スクリーン座標に戻す時はゼロを指定 MOUSEORG(0)
 ※ 有効範囲はスレッド単位

 

ドラッグ&ドロップの動作をさせる方法

UWSCではドラッグ&ドロップの動作をさせる命令は用意されていませんが、BTN関数とMMV関数を組み合わせることでドラッグ&ドロップの動作をさせることができます。

適切にウェイトを入れないと上手く動作しない可能性があるので注意しましょう。

 

ドラッグ&ドロップの動作をさせるサンプル

最初に1秒ウェイトを入れたので、その間にカーソル位置を変えてみてください。

SLEEP(1)
x = G_MOUSE_X
y = G_MOUSE_Y
BTN(LEFT, DOWN)   // マウスの左ボタンを押したままにする
SLEEP(0.1)
MMV(x + 100, y + 100) // マウスカーソルを移動させる
SLEEP(0.1)
BTN(LEFT, UP)   // マウスの左ボタンを離す

 

BTN関数リファレンス

BTN関数のリファレンスをマニュアルから転載します。

BTN( ボタン, 状態, [x, y, ms] )
引数
 ボタン:LEFT, RIGHT, MIDDLE, WHEEL(ホイール回転)
 状態:CLICK(0), DOWN(1), UP(2)  WHEEL指定時はノッチ数
 x, y: 位置 (省略時は現在位置にて) 
 ms: 実行までの待ち時間 (ミリセカンド)

 

MMV関数リファレンス

MMV関数のリファレンスをマニュアルから転載します。

MMV( x, y, [ms] )
引数
 x, y: 位置 
 ms: 実行までの待ち時間 (ミリセカンド)

 

マウスやキーボードの入力を無効化させる方法

マウスやキーボードの入力を無効化させるためにはLOCKHARD関数とLOCKHARDEX関数があります。

LOCKHARD関数により入力が無効化されていてもUWSCの関数による操作は有効ですが、LOCKHARDEX関数により入力が無効化されている場合はUWSCの関数による操作も無効化されます。

UWSCで自動化させている場合、マウスやキーボードからの入力を無効化させることで予期せぬ操作を防ぐことができます。

入力無効化状態のままスクリプトが終了すると入力無効化も解除されます。

 

マウスやキーボードの入力を無効化させるサンプル

試しに5秒間だけマウスやキーボードの入力を無効化させてみましょう。

LOCKHARD(TRUE)
SLEEP(5)
LOCKHARD(FALSE)

 

LOCKHARD関数リファレンス

LOCKHARD関数のリファレンスをマニュアルから転載します。

LOCKHARD( 禁止フラグ )
引数
 禁止フラグ: TRUE:入力禁止、 FALSE:解除

 ※ 管理者権限が必要
 ※ 使用中も KBD, BTN関数は有効
 ※ 強制解除が必要な場合は Ctrl + Alt + Delete

 

LOCKHARDEX関数リファレンス

LOCKHARDEX関数のリファレンスをマニュアルから転載します。

LOCKHARDEX( ID, [モード] )
引数
 ID: 入力禁止にしたいウィンドウID、 0 が指定された場合は全体を禁止
 モード:
   0:      キーボード、マウスとも禁止 (デフォルト)
   LOCK_KEYBOARD:キーボードのみ禁止
   LOCK_MOUSE:  マウスのみ禁止

 LOCKHARDEX() // 引数無しにて入力禁止を解除

 ※ 管理者権限は必要なし
 ※ 使用中は KBD, BTN関数は無効(MOUSEORG関数にて MORG_DIRECTが指定されている場合は可)
 ※ 強制終了が必要な場合は タスクマネージャを起動(Ctrl+Alt+Delete)して、UWSC.exeを終了

 

マウスカーソルの座標を取得する方法

マウスカーソルの座標を取得するためには特に命令を必要としません。

特殊変数のG_MOUSE_XにマウスカーソルのX座標が、G_MOUSE_YにマウスカーソルのY座標が格納されています。

 

マウスカーソルの座標を取得するサンプル

PRINT "マウスカーソルの座標"
PRINT "x:" + G_MOUSE_X
PRINT "y:" + G_MOUSE_Y

マウスカーソルの座標を取得する方法実行結果

 

特殊変数リファレンス

特殊変数のリファレンスをマニュアルから転載します。

 G_MOUSE_X      // マウス位置Xを返す特殊変数
 G_MOUSE_Y      // マウス位置Yを返す特殊変数
 GET_WIN_DIR     // Windows ディレクトリ
 GET_SYS_DIR     // System ディレクトリ
 GET_CUR_DIR     // 現在のカレントディレクトリ
 GET_APPDATA_DIR   // Application Data のディレクトリ
 GET_UWSC_DIR    // UWSCのディレクトリ
 GET_UWSC_VER    // UWSCのバージョン
 GET_UWSC_PRO    // Pro版であればTrue、Free版はFalse
 GET_UWSC_NAME    // 実行中のスクリプト名
 G_SCREEN_W     // 画面幅
 G_SCREEN_H     // 画面高
 G_SCREEN_C     // 色数(1ピクセルのビット数)