SAVEIMG

構文
  1. void = 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
バックグランドとしてアプリより画像を取得(他画面がオーバーラップしていてもOK)
戻り値

プログラム実行例

表示されているすべてのウィンドウのスクリーンショットを保存

DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")

DIM folderspec = "D:\Desktop\Screenshot"
IF FSO.FolderExists(folderspec) = FALSE THEN FSO.CreateFolder(folderspec)

FOR n = 0 TO GETALLWIN() - 1
	DIM ID = ALL_WIN_ID[n]
	IFB STATUS(ID, ST_VISIBLE) = TRUE		
		DIM filename = ID + "_" + STATUS(ID, ST_TITLE)
		filename = PathCleanupSpec(filename)
		DIM path = FSO.BuildPath(folderspec, filename)
		path = uniqueFilename(path)
		SAVEIMG(path, id)
	ENDIF
NEXT
  1. CREATEOLEOBJ
  2. FSO.FolderExists
  3. FSO.CreateFolder
  4. GETALLWIN
  5. STATUS
  6. PathCleanupSpec
  7. FSO.BuildPath
  8. uniqueFilename
  9. SAVEIMG

画像をクリップボードにコピーする

Alt+Sでマウスカーソル下のオブジェクトのスクリーンショット画像をクリップボードにコピーします。

SETHOTKEY(VK_S, MOD_ALT, "imageToClipboard")
SETHOTKEY(VK_ESC, EMPTYPARAM, "forceQuit")

WHILE TRUE
	SLEEP(0.01)
WEND

PROCEDURE imageToClipboard()
	SAVEIMG( , GETID(GET_FROMPOINT_WIN))
FEND
  1. SETHOTKEY
  2. SLEEP
  3. SAVEIMG
  4. GETID
解説
  1. 1行目
    SETHOTKEY(VK_S, MOD_ALT, "imageToClipboard")
    Alt+SでimageToClipboard関数を実行します。
  2. 2行目
    SETHOTKEY(VK_ESC, EMPTYPARAM, "forceQuit")
    EscでforceQuit関数を実行します。
  3. 4-6行目
    WHILE TRUE
    	SLEEP(0.01)
    WEND
    無限ループ。Alt+SもしくはEscが入力されるのを待機します。

Was this post helpful?

関連記事

getBitmap
引数に指定したビットマップ画像のサイズ(px)・幅(px)・高さ(px)・ビットの深さ(bpp)を配列で返します。
altClick
Web上(IE)の指定したalt属性を含む画像をクリックします。クリックに成功した場合はTrue、失敗した場合はFalseを返します。
CHKIMG
指定画像が画面上にあるかチェックしあればその情報を返します。
PEEKCOLOR
PEEKCOLOR関数は、指定座標の色を取得する関数です。