アクティブなウィンドウのスクリーンショットを保存する方法

スクリーンショットを保存するためにはSAVEIMG関数を利用します。

引数の指定でアクティブなウィンドウのみを対象にしたり画面全体を対象とすることができます。

また、ファイルに保存するだけでなくクリップボードに転送することもできます。

デフォルトではbmp形式で保存されますがjpeg形式で保存することも可能です。

保存したファイルの拡張子は自動で付与されます。

 

アクティブなウィンドウのスクリーンショットを保存するサンプル

最初にウェイトを入れているので、その間にスクリーンショットを保存したいウィンドウをアクティブにしてください。

SLEEP(2)
id = GETID(GET_ACTIVE_WIN)
SAVEIMG("screenshot", id)

 

アクティブなウィンドウのスクリーンショットを保存するサンプルjpeg版

最初にウェイトを入れているので、その間にスクリーンショットを保存したいウィンドウをアクティブにしてください。

SLEEP(2)
id = GETID(GET_ACTIVE_WIN)
SAVEIMG("screenshot", id, , , , , , 70) // 圧縮率を70に設定

 

SAVEIMG関数リファレンス

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

SAVEIMG( [画像名, ID, x, y, 幅, 高さ, クライアント指定, JPEG指定, 画面取得指定] )
引数
 画像名: 保存ファイル名(BMP/JPEG形式) (画像名を省略した場合はクリップボードへ)
 ID: Windowを識別するID (0 であればスクリーン全体)
 X, Y: 位置
 幅, 高さ: 大きさ
 クライアント指定:
   FALSE: 指定ウィンドウ全体 (デフォルト)
   TRUE: クライアント領域
 JPEG指定: 1(高圧縮)~100(低圧縮) までの圧縮率を指定すると JPEGにて保存、 0(デフォルト)は BMPにて保存
 画面取得指定:
   0 (デフォルト): 指定アプリがフォアグランドかバックグランドかにより画面の取得方法を変更
   IMG_FORE    : フォアグランドとして可視画面(デスクトップ)より画面を取得
   IMG_BACK    : バックグランドとしてアプリより画面を取得

 

指定位置の色を取得する方法

指定位置の色を取得するにはPEEKCOLOR関数を使用します。

PEEKCOLOR関数はR、G、B、それぞれの色の成分のみを取得することが可能です。

各成分は0~255の範囲になります。

 

指定位置の色を取得するサンプル

x = G_MOUSE_X // マウスカーソルのX座標
y = G_MOUSE_Y // マウスカーソルのY座標
r = PEEKCOLOR(x, y, COL_R) // 赤の成分のみ取得
PRINT "マウスカーソルの下のR成分は" + R + "です"

指定位置の色を取得する方法実行結果

 

PEEKCOLOR関数リファレンス

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

戻値 = PEEKCOLOR( X, Y, [RGB指定, クリップボード指定] )
引数
 X、Y: 座標 X、Y
 RGB指定:
   0     // BGR値にて返す (デフォルト)
   COL_RGB  // RGB値にて返す
   COL_R   // 赤の成分のみを返す
   COL_G   // 緑の成分のみを返す
   COL_B   // 青の成分のみを返す
 クリップボード指定:
   FALSE: 画面より (デフォルト)
   TRUE: クリップボードより
戻値
 指定位置の色情報

 ※ BGR値 例) 青:$FF0000、緑:$00FF00、赤:$0000FF、オレンジ:$0080FF、黄:$00FFFF
 ※ RGB値 例) 赤:$FF0000、緑:$00FF00、青:$0000FF、オレンジ:$FF8000、黄:$FFFF00

 

画像認識に成功したらマウスでクリックする方法

画像認識にはCHKIMG関数を利用します。CHKIMG関数で画像の検出に成功すると画像の座標を取得できるので、その座標をマウスでクリックさせます。

CHKIMG命令は透過処理や検出範囲の指定もできるので状況に応じてパラメータを指定してください。

注意したい点は画像認識に成功した場合、画像の左上の座標が変数G_IMG_X、G_IMG_Yに代入されることです。画像の中央ではないので意図した位置と違う位置をクリックしてしまう場合はこの原因かもしれません。

ちなみにBTN命令だけでも座標指定ができます。

 

画像認識に成功したらマウスでクリックするサンプル

IFB CHKIMG("sample.bmp") // 認識させたい画像ファイルを指定する
 // 画像認識に成功した場合の処理をここに書く
 MMV(G_IMG_X, G_IMG_Y)
 BTN(LEFT,CLICK)
ELSE
 // 画像認識に失敗した場合の処理をここに書く
 MSGBOX("画像認識に失敗しました。")
ENDIF

 

CHKIMG関数リファレンス

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

戻値 = CHKIMG( [画像名, 透過色/色無視, x1, y1, x2, y2, 番号, 色幅] )
引数
 画像名: 画像ファイル名(BMP形式のみ) (画像名を省略した場合はクリップボードから)
 透過色/色無視:
      0: 指定なし (デフォルト)
      1: 左上、2:右上、3:左下、4:右下 の1ピクセルの色を透過色として処理
     -1: 色を無視して形でチェックする
 x1, y1, x2, y2: サーチ範囲
 番号: 複数ある場合に順番を指定 (左上から)
     -1: -1が指定された場合はヒットした数を戻値として返し、座標情報は ALL_IMG_X[], ALL_IMG_Y[] に格納
        (G_IMG_X、 G_IMG_Y には最後にヒットした位置が入る)
 色幅: チェックに色幅を持たせる (色無視指定時もしくは 16bitカラー以下の場合は無効)
     IMG_MSK_BGR1  // 各色(BGR)に対し 2/256の色幅を許す
     IMG_MSK_BGR2  // 各色(BGR)に対し 4/256の色幅を許す
     IMG_MSK_BGR3  // 各色(BGR)に対し 8/256の色幅を許す
     IMG_MSK_BGR4  // 各色(BGR)に対し 16/256の色幅を許す
     IMG_MSK_B1, 2, 3, 4  // 青に対し 2/256, 4/256, 8/256, 16/256の色幅を許す
     IMG_MSK_G1, 2, 3, 4  // 緑に対し 2/256, 4/256, 8/256, 16/256の色幅を許す
     IMG_MSK_R1, 2, 3, 4  // 赤に対し 2/256, 4/256, 8/256, 16/256の色幅を許す
      ※ 演算可 例:IMG_MSK_B1 or IMG_MSK_R3(青に対し 2/256の色幅を許す + 赤に対し 8/256の色幅を許す)
戻値
 有ればTRUE、無ければFALSE
 TRUE の場合は見つかった座標を特殊変数 G_IMG_X、 G_IMG_Y に格納  
 番号にて -1指定時はヒットした数を返し、座標情報は配列変数 ALL_IMG_X[], ALL_IMG_Y[] に格納(配列はゼロから)