見出し画像

【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

いいなと思ったら応援しよう!