これは
[Pebblewatch]スマートウォッチでプレゼン操作する
を参考にしてWindowsでも実装してみたかったのでやってみました。
基本的には同じやりかたで
Pebble -> Smartphone -> Windows Machine -> Flask -> SendKeys & VBScript -> キー入力
です。
SendKeysを使う
PythonでSendKeysライブラリをつかってキー入力します。
import SendKeys
SendKeysのインストールはPythonでSendKeysを参考にしました。
これでスライド操作ができるようになりました。例えば
スライドショー開始 SendKeys.SendKeys("{F5}")
次のスライド SendKeys.SendKeys("{RIGHT}")
前のスライド SendKeys.SendKeys("{LEFT}")
てな感じです。
pptファイルを開く
今回はPythonでVBScriptファイルをコマンドプロンプト上で作り、それを実行することで実現しました。
import os
os.system("echo Set powerPointObj = WScript.CreateObject(\"PowerPoint.Application\") > ppt.vbs")
os.system("echo powerPointObj.Visible = True >> ppt.vbs")
os.system("echo powerPointObj.WindowState = 2 >> ppt.vbs")
os.system("echo Set ppt = powerPointObj.Presentations.Open("pptファイルパス") >> ppt.vbs")
path = os.getcwd()
cmd = "wscript \"" + path + "/ppt.vbs\"";
os.system(cmd)
コマンドプロンプト上でppt.vbsファイルを作成してwscriptコマンドでそれを実行します。
Flaskに実装
これまでのものをつかってFlaskに実装します。
今回は開きたいpptファイルのパスをブラウザ上で簡単に入力できるようにしました。
<!doctype html>
<head>
<title>Hello from Flask</title>
</head>
<body>
<h2>Type File Path</h2>
<form method="POST">
<input type="text" name="path" value = "C:\">
<input type="submit" name="form" value="Send">
</form>
</body>
</html>
from flask import Flask, render_template, request, redirect, url_for
import sys
import SendKeys, time
import os
# configuration
SECRET_KEY = 'pebbly'
# create our little application :)
app = Flask(__name__)
app.config.from_object(__name__)
# Powerpoint
# /slideshow
@app.route('/slideshow')
def slideshow():
path = os.getcwd()
cmd = "wscript \"" + path + "/ppt.vbs\""
os.system(cmd)
time.sleep(1)
SendKeys.SendKeys("{F5}")
return "ok"
# RightArrow
# /right
@app.route('/right')
def goright():
SendKeys.SendKeys("{RIGHT}")
return "right"
# LeftArrow
# /left
@app.route('/left')
def goleft():
SendKeys.SendKeys("{LEFT}")
return "left"
@app.route('/')
def index():
return render_template('index.html')
@app.route('/', methods=['POST'])
def my_form_post():
text = request.form['path']
path = text
os.system("echo Set powerPointObj = WScript.CreateObject(\"PowerPoint.Application\") > ppt.vbs")
os.system("echo powerPointObj.Visible = True >> ppt.vbs")
os.system("echo powerPointObj.WindowState = 2 >> ppt.vbs")
cmd = "echo Set ppt = powerPointObj.Presentations.Open(\"" + path + "\") >> ppt.vbs"
os.system(cmd)
return "Ready to start presentation"
if __name__ == '__main__':
app.run(debug=True, host="0.0.0.0")
あとは
[Pebblewatch]スマートウォッチでプレゼン操作する
と同じように
pebbleからURLを送信してWindowsでも動かせます。