1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Windows10のスクリーンショットを簡単に保存したい!

Last updated at Posted at 2019-02-01

Windows10のスクリーンショット

いつぞやのCreatorsUpdateで追加された
[Win+Shift+S]で起動できるスクリーンショット機能...

これを使うとクリップボードに画像を保存されるのですが...
やっぱりMacみたいに画像を保存したいときもあると思います!
ということで今回はWindows10で撮ったスクリーンショットをファイルに保存する
プログラムを書いていこうと思います!!

環境

  • Windows10 CreatorsUpdate以降
  • python3.6

必要なライブラリ

  • PIL
  • pynput

インポート

sc.py
from PIL import ImageGrab, Image
import datetime
from pynput.keyboard import Key, Listener

クリップボードの画像を保存する関数

まずクリップボードの画像を保存する関数をさっと
書いてしまいましょう!(スピード大事!!

sc.py
def save():
    im = ImageGrab.grabclipboard()
    if isinstance(im, Image.Image):
        im.save(str("保存先をここに入力")+str(datetime.datetime.today()).replace(" ","-").replace(":","-")+'.jpg')
        print('saved') #保存できた時
    else:
        print('no image') #保存できなかった時(なぜか保存出来てるのに出ることもある)

そして...

特定のキー 今回は[CtrlR]そう右側にあるCtrlキーを押したときにスクリーンショットを
保存するようにします!
pynputのイベントを利用するために関数を書きます

sc.py
def on_press(key):


    try:
        if key.char == "DUMMY":
            save()
        print('alphanumeric key {0} pressed'.format(
            key.char))
    except AttributeError:

        it= "{0}".format(
            key)
        if it == "Key.ctrl_r":
            save()

詳しい説明は省きますが Ctrl,Shift,backspace,escなどを検知する時は
if it == "Key.ctrl_r":をの部分を if it == "ESC":
といった具合に書き換えてください
数字や文字などのキーを検知するには
try分の中にある
if key.char == "DUMMY": if key.char == "A":などに書き換えてください
(このコード内ではDUMMY(ダミー)を充てています)
##実行!

sc.py
if __name__ == '__main__':

    with Listener(
        on_press = on_press,
    ) as listener:
        listener.join()

リスナーを設定して実行するコードを書いて完了です!
試しに実行してみましょう!
GIF
(no imageって出たりそれで慌てて二回[ctrlR]を押してしまいましたが動作には問題なさそうですね!(必死))

バックグラウンドで動かしたい!

バックグラウンドで動かしたほうが絶対いいと思うんですよね..
ということでVBSとbatを利用します!
使えるものは何でも使ってやる!!

start.bat
@ECHO OFF
python sc.py

sc.pyと同じディレクトリにおいてください
そして..vbsが..

start.vbs
Dim WSHShell
Set WSHShell = WScript.CreateObject("WScript.Shell")
Call WSHShell.Run("D:\twitter\start.bat", 0, True )

[Call WSHShell.Run("D:\twitter\start.bat", 0, True )]この部分はsc.pyを設置した場所を指定してください!

最後に

これで以上です!
途中Unicode系のエラーが出たりして慌てていましたが(慌てすぎ)
無事に作成できました!
これをスタートアップに登録すればもっと利便性は上がりそうです!

ソースコードたち

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?