#この記事が役に立つ人
何らかの理由でモニターが接続されていない機器から,プロジェクターなどで,画像やWebページを簡単に表示したい人.
#必要な環境
- 問題の機器と同じサブネットに接続できるChromeがインストールされているPC
- PCにSeleniumのWebDriverをインストールする.
- PCに,pythonとseleniumモジュールがインストールされていること.seleniumはpipでインストール可能.
- PCのFirewallに,使用するport番号で,サブネットの中から,inboundできるよう設定する.
私は,Windows10のPCで実行しましたが,おそらく,Macでも可能と思います.インストールでは,次のページを参考にさせていただきました.
【windows7】pythonでChromeのブラウザ操作を自動化 ~Selenium WebDriverを利用
#表示するPC上の処理
次のPython(2.7)のプログラムを起動しておきます.ソケットを開けて,urlの文字列を受信し,WebDriverに渡すだけです.
ここでは,ポート番号は5000番を使っています.
runchrome.py
import socket
from time import sleep
from selenium import webdriver
browser = webdriver.Chrome('C:\selenium\chromedriver')
s = socket.socket()
port = 5000
s.bind(('', port))
while True:
print('listening')
s.listen(5)
c, addr = s.accept()
print('receiving')
inurl = c.recv(4096)
print('input:' + inurl)
if inurl != '':
browser.get(inurl)
c.send(inurl)
c.close()
s.close()
#表示を指示する機器上の処理
ソケットを開けて,表示するurlの文字列を送信するだけです.
どの言語でも良いですが,私はpythonで書きました.python2.7です.
dispUrl.py
def dispUrl(p):
ipv = xx.xx.xx.xx
portv = 5000
s.connect(ipv,portv)
s.send(p)
s.recv(4096)
s.close()
return
#補足
一応,受信した文字列を返信して,双方向にしていますが,場合によってはここは直した方が良いかもしれません.
sleepを入れなくても,私の環境では動きましたが,必要な場合もあるかもしれません.
余計なソフトを入れたくない人に役に立てば幸いです.