見出し画像

UWSC:マウス座標と色取得方法!コピペで簡単すぐ使える。

Windows用自動操作ツールである『UWSC』は、効率的な作業をするためのツールの一つです。今回は、マウスの座標取得や色の取得方法に焦点を当て、サンプルコードを使って解説していきます。

◆この記事でわかること

  • マウス座標を取得する方法

  • 指定座標の色を取得する方法

  • ファイルに書き込み保存する方法



■マウス座標と色取得サンプル

◆機能について説明

紹介するサンプルコードの機能について、ご説明します。

  • マウス横に吹き出しで座標XYと色情報をリアルタイム表示

  • [ALT] 押下で「X座標, Y座標 : 色情報(RGB)」を、表示用ウインドウに出力

  • [ALT] 押下で「X座標, Y座標 : 色情報(RGB)」を、output.txtに追記

  • [Esc] 押下でoutput.txtに保存して終了


◆サンプルコード紹介

サンプルコードを紹介します。
お急ぎの方はコピペして使っていただければOKです。

//================================================
//    マウス座標取得(簡易)
//================================================
//準備
StopForm( False )  // STOPボタン:非表示
keystat  = 0
stopstat = 0
Gettime()
timestamp = G_TIME_YY4 + "-" + G_TIME_MM2 + "-" + G_TIME_DD2 + "__" + G_TIME_HH2 + ":" + G_TIME_NN2  //例 2024-01-21__12:00
print "座標記録: Alt   終了: Esc"
print "x, y : 色(RGB)"

//出力ファイル準備
fid = fopen("output.txt", F_READ or F_WRITE)       //ファイルオープン(追記)
fput(fid, "//=== start [" + timestamp + " ]===//" )

//メイン処理
while True
    sleep(0.1)
    x = G_MOUSE_X; y = G_MOUSE_Y    //マウス座標 XY
    c = peekcolor(x, y, COL_RGB)    //カーソル位置の色取得(RGB)
    
    keystat  = (keystat  * 2 + getkeystate(VK_ALT)) mod 4    //キー入力処理
    stopstat = getkeystate(VK_ESC) //終了キー入力処理
    mes = x + ", " + y + " : " + FORMAT(c, 0, -1)
    
    if keystat = 1 then   //記録判定
        //キーを押した時のみ処理する(前ループで入力なし、今ループで入力あり)
        print mes
        fput(fid, mes)    //書き込み(座標XY、色)
    endif
    if stopstat then      //終了判定
        print "終了"
        break
    endif
    fukidasi(mes, x + 2, y + 2, 1, , , , , 64)    //吹き出し表示
wend

//終了処理
Gettime()
timestamp = G_TIME_YY4 + "-" + G_TIME_MM2 + "-" + G_TIME_DD2 + "__" + G_TIME_HH2 + ":" + G_TIME_NN2    //例 2024-01-21__12:10
fput(fid, "//=== end [" + timestamp + " ]===//" )
fclose(fid)    //ファイルクローズ

//=== start [2024-01-22__22:33 ]===//
838, 676 : F5F8FA
1388, 671 : FFFFFF
1072, 293 : 0
964, 110 : 6352E3
852, 109 : F1F1F1
1070, 586 : F5F8FA
//=== end [2024-01-22__22:33 ]===//

output.txt


■サンプルコード説明

サンプルコードで使用している内容で重要な箇所の説明をします。
詳細を知りたい場合はUWSCのヘルプを確認していただければと思います。

= 補足 =
<>で囲んだものは省略できます。
★マークがついたものはデフォルト値で、引数を省略した場合です

G_MOUSE_X : マウス座標X

  特殊変数: マウス座標Xが入る

G_MOUSE_Y : マウス座標Y

  特殊変数: マウス座標Yが入る

x = G_MOUSE_X; y = G_MOUSE_Y    //マウス座標 XY

変数x、yに現在のマウス座標を入れています。

PEEKCOLOR : 指定座標の色取得

  戻値 = PEEKCOLOR( x, y, <RGB指定>, <色取得先> )

 【引数】
  x
: 色取得先の座標です。
  :    〃
  RGB指定: 
   0     // BGR値にて返す★
   COL_RGB  // RGB値にて返す
   COL_R   // 赤の成分のみを返す
   COL_G   // 緑の成分のみを返す
   COL_B   // 青の成分のみを返す
  色取得先: 
   FALSE 画面★
   TRUE クリップボード

 【戻り値】
  
指定位置の色情報(<RGB指定>で指定したもの)

サンプルコードの場合、赤緑青の順番で色情報を受け取っています。

 c = peekcolor(x, y, COL_RGB)    //カーソル位置の色取得(RGB)

色情報をそのまま表示すると桁数がすごく大きい数値でびっくりします。
確認する場合は、16進数表示をして確認しましょう。

FOPEN/FPUT/FCLOSE:ファイル開く、書き込む、閉じる

//出力ファイル準備
fid = fopen("output.txt", F_READ or F_WRITE)       //ファイルオープン(追記)
fput(fid, "//=== start [" + timestamp + " ]===//" )
.
.
.
    fput(fid, mes)    //書き込み(座標XY、色)
    .
    .
    .
fclose(fid)    //ファイルクローズ

ファイル入出力の流れは、以下のとおりです。

  1. FOPENでファイルを開き、ファイルハンドルを取得

  2. FPUTでファイルに書き込み。(ファイルハンドルが必要)

  3. FCLOSEでファイルを閉じる。(閉じるまで保存されない)


この記事が気に入ったらサポートをしてみませんか?