本ページには広告が含まれています。
目次
指定したウィンドウのスクリーンショット画像を保存します。
- 構文
- void = SAVEIMG( 画像名, ID, x, y, 幅, 高さ, クライアント指定, JPEG指定, 画面取得指定 )
- 引数
- 画像名 (String = Empty)省略可
- 保存ファイル名(BMP/JPEG形式) (画像名を省略した場合はクリップボードへ)
- ID (Integer = 0)省略可
- Windowを識別するID (0 であればスクリーン全体)
- X, Y (Integer)省略可
- 位置
- 幅, 高さ (Integer)省略可
- 大きさ
- クライアント指定 (Boolean = False)省略可
- FALSE
- 指定ウィンドウ全体 (デフォルト)
- TRUE
- クライアント領域
- JPEG指定 (Integer = 0)省略可
- 1(高圧縮)~100(低圧縮) までの圧縮率を指定すると JPEGにて保存、 0(デフォルト)は BMPにて保存
- 画面取得指定 (#saveimg = 0)省略可
- 0(デフォルト)
- 指定アプリがフォアグランドかバックグランドかにより画面の取得方法を変更
- IMG_FORE
- フォアグランドとして可視画面(デスクトップ)より画像を取得
- IMG_BACK
- バックグランドとしてアプリより画像を取得(他画面がオーバーラップしていてもOK)
- 戻り値
位置
第2引数でスクリーンショット画像を撮るウィンドウのIDを指定している場合、そのウィンドウの左上の座標(x, y)=(0, 0)とする相対座標となります。そのためx,yにマイナス値を指定することも可能です。指定した座標が画面の外に来る場合、その範囲は白で埋められます。IDを指定していない場合は画面の左上の座標を(0, 0)とする絶対座標となります。
サイズ
画像のサイズは正の数を指定します。負の数を指定した場合「KansuCall:Out of system resources」のエラーが発生します。画面のサイズを超える数値を指定した場合、画面のサイズまで切り捨てられます。解像度1366x768の場合、1366x768の画像です。
使い方
ビットマップ画像を保存
アクティブウィンドウのスクリーンショット画像を「image.bmp」というファイル名で保存します。
SAVEIMG("image.bmp", GETID(GET_ACTIVE_WIN))
JPEG画像を保存
アクティブウィンドウのスクリーンショット画像を「image.jpg」というファイル名で保存します。JPEG指定で1~100を指定したときはJPEG画像として保存されます。
SAVEIMG("image.jpg", GETID(GET_ACTIVE_WIN),,,,,, 100)
アクティブウィンドウのスクリーンショット画像をクリップボードに送る
SAVEIMG(, GETID(GET_ACTIVE_WIN))
スクリーン全体のスクリーンショット画像をペイントに貼る
スクリーン全体のスクリーンショット画像を一度クリップボードに送り、ペイントを起動して貼り付けます。
SAVEIMG()
DIM ID = EXEC("mspaint")
CTRLWIN(ID, ACTIVATE)
SCKEY(ID, VK_CTRL, VK_V)
アクティブウィンドウの指定した範囲のスクリーンショットをクリップボードに送る
アクティブウィンドウのx=0,y=0から幅100,高さ100のスクリーンショット画像をクリップボードに送ります。
SAVEIMG(, GETID(GET_ACTIVE_WIN), 0, 0, 100, 100)
プログラム実行例
表示されているすべてのウィンドウのスクリーンショットを保存
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
//////////////////////////////////////////////////
// 【引数】
// filename : 使えない文字を削除するファイル・フォルダ名
// 【戻り値】
// ファイル名として使えない文字を削除した文字列
//////////////////////////////////////////////////
FUNCTION PathCleanupSpec(filename)
DIM filenameErrChar[12] = "\", "/", ":", "*", "?", "<#DBL>", "<#CR>", "<#TAB>", "<", ">", "|", "[", "]"
FOR item IN filenameErrChar
filename = REPLACE(filename, item, "")
NEXT
RESULT = filename
FEND
//////////////////////////////////////////////////
// 【引数】
// path : ファイルのパス
// 【戻り値】
// 重複しないファイル名
//////////////////////////////////////////////////
FUNCTION uniqueFilename(path)
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
IFB FSO.FileExists(path) THEN
DIM fol = FSO.GetParentFolderName(path)
DIM filename = FSO.GetBaseName(path)
DIM extension = FSO.GetExtensionName(path)
DIM i = 2
WHILE FSO.FileExists(FSO.BuildPath(fol, filename + " (" + i + ")." + extension))
i = i + 1
WEND
RESULT = FSO.BuildPath(fol, filename + " (" + i + ")." + extension)
ELSE
RESULT = path
ENDIF
FEND
使用関数
解説
画像をクリップボードにコピーする
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
//////////////////////////////////////////////////
// 【引数】
//
// 【戻り値】
//
//////////////////////////////////////////////////
PROCEDURE forceQuit()
EXITEXIT
FEND
使用関数
解説
関連記事
- CHKIMG関数 (スクリプト関数)
- 指定画像が画面上にあるかチェックしあればその情報を返します。
- altClick関数 (自作関数)
- Web上(IE)の指定したalt属性を含む画像をクリックします。
- getBitmap関数 (自作関数)
- 引数に指定したビットマップ画像のサイズ・幅・高さ・ビットの深さを配列で返します。
- PEEKCOLOR関数 (スクリプト関数)
- PEEKCOLOR関数は、指定座標の色を取得する関数です。