![見出し画像](https://assets.st-note.com/production/uploads/images/126977540/rectangle_large_type_2_9ee88d54cefd2e406be548d790386de4.png?width=1200)
【UWSC】コピペでOK!クリックでスクリーンショット
■はじめに
UWSCで画像判定用の画像を用意するために作成したスクリプトを紹介します。
画像判定用の画像は、PrintScreenキーで保存したものではうまくいきません。
画像判定の画像を用意する手軽な方法は、以下2つです。
フリーソフト『WinShot』を利用する
UWSCのSAVEIMG関数を使って準備
この記事では、2の方法を使って準備する方法の手助けになるものです。
個人用のメモですが、どなたかの参考になれば幸いです。
◆この記事でわかること
UWSCを使って画面を保存する方法(SAVEIMG関数)
UWSCを使って日付時刻を取得する方法(GETTIME関数)
キー情報取得方法(GETKEYSTATE関数)
UWSCの基本操作はコチラ
■左クリックでスクリーンショット
◆機能説明
左クリックでデスクトップ全体のスクリーンショットを取得。
ファイル名は「スクショ_年月日-時分-秒」で保存。
ESCキーで終了する。
//---------------------------------------
// 機能: 左クリックでスクリーンショット保存。
// 用途: 画像診断用の画像取得、手順書の作成など
//---------------------------------------
fukidasi("左クリック:スクショ<#CR>ESC:終了")
newkey = FALSE
oldkey = FALSE
folder = ".\shot\" //保存フォルダ
//保存フォルダがなければ作成
if folder <> "" and fopen(folder, F_EXISTS) = FALSE then
res = Doscmd("mkdir " + folder)
endif
//メインループ
while True
sleep(0.2)
oldkey = newkey
newkey = getkeystate(VK_LBUTTON)
if newkey = True and oldkey = False then //左クリックでスクショを保存
gettime()
img_name = folder + "スクショ_" + G_TIME_YY4 + G_TIME_MM2 + G_TIME_DD2 + "-" + G_TIME_HH2 + G_TIME_NN2 + "-" + G_TIME_SS2
//画像保存
Saveimg( img_name ) //BMP
//Saveimg( img_name, , , , , , , 80, 0 ) //JPEG
endif
if getkeystate(VK_ESC) then // ESCで終了で終了
break
endif
wend
Shift+左クリックを2回でトリミング+スクリーンショット
◆機能説明
スクショを指定した2点間の部分のみ保存。
Shift+左クリック1回目でスクショの始点設定。
Shift+左クリック2回目でスクショの終点設定+保存。
ファイル名は「スクショ_年月日-時分-秒」で保存。
ESCキーで終了する。
以下、サンプルコードを紹介します。
Shift+右クリック設定ですが、テキストを選択する場合など、Shiftだと都合が悪い場合もあります。
その際は、CtrlキーやAltキーに変更するなどしていただければOKです。
(VK_SHIFTの部分を、VK_CTRLやVK_ALTに変更)
//---------------------------------------
// 機能: Shift押しながらクリック2回でスクショ
// (クリック1回目が始点、2回目が終点)
// 用途: 画像診断用の画像取得、手順書の作成など
//---------------------------------------
fukidasi("Shift+左クリック2回:スクショ<#CR>ESC:終了")
newkey = FALSE
oldkey = FALSE
shiftkey = False
startx = 0
starty = 0
endx = 0
endy = 0
set_status = 0
folder = ".\shot\"
//格納先確認。なければ作成
if folder <> "" and fopen(folder, F_EXISTS) = FALSE then
res = Doscmd("mkdir " + folder)
endif
//メインルーチン
while True
sleep(0.2)
//mes = "mouse: " + G_MOUSE_X + "," + G_MOUSE_Y
oldkey = newkey
newkey = getkeystate(VK_LBUTTON)
shiftkey = getkeystate(VK_SHIFT)
if newkey = True and oldkey = False and shiftkey = True then // 左クリックでスクショを保存
if set_status = 0 then
startx = G_MOUSE_X
starty = G_MOUSE_Y
//mes = "set: " + G_MOUSE_X + "," + G_MOUSE_Y
fukidasi("set_start: " + startx + "," + starty)
set_status = 1
elseif set_status = 1
endx = G_MOUSE_X
endy = G_MOUSE_Y
swap(startx, endx)
swap(starty, endy)
fukidasi("set_start: " + startx + "," + starty + "<#CR>" + "set_end:" + endx + "," + endy )
set_status = 2
endif
if set_status = 2 then
gettime()
img_name = folder + "スクショ-レンジ_" + G_TIME_YY4 + G_TIME_MM2 + G_TIME_DD2 + "-" + G_TIME_HH2 + G_TIME_NN2 + "-" + G_TIME_SS2
// 画像保存
Saveimg( img_name, 0, startx, starty, endx - startx, endy - starty ) // BMP
//Saveimg( img_name, , , , , , , 80, 0 ) // JPEG
set_status = 0
startx = 0; starty = 0
startx = 0; startx = 0
endif
endif
if getkeystate(VK_ESC) then // ESCで終了で終了
break
endif
wend
function swap(var a, var b)
res = 0
if a < b then //入れ替えない
res = 0
elseif a > b then //入れ替え
t = a
a = b
b = t
res = 1
endif
result = res
fend