はじめに
お家で仕事することが多くなり、多くの人が「みんなきちんと家で仕事してるのか?」という不安を抱えているという話を聞いています。
そもそも不安になること自体がおかしいことかなと思いますが、上司が不安になると自分が困ることになる人もいるのかなと思ったりもします。
ということで、パソコンを使っている時にリアルタイムで使用しているアプリの情報を収集できればその不安も少しは低減できるのではないかと考え、方法を検討してみました。
ここでは、「アクティブウィンドウを変更するたびにアクティブウインドウのタイトルを取得して表示する」という方法をまとめてみます。
動作環境
- macOS Move
- Windows10 Pro
- Python3.7
ライブラリのインストール
Macを操作するライブラリ
Macの方は以下のコマンドで必要なライブラリをインストールして下さい。
pip install -U PyObjC
Windowsを操作するライブラリ
Windowsの方は以下のコマンドで必要なライブラリをインストールして下さい。
pip install -U pywin32
スクリプトの作成
get_active_window_title.py
#!/usr/bin/env python
import sys
# Mac用
if sys.platform == "darwin":
from AppKit import NSWorkspace
from Quartz import (
CGWindowListCopyWindowInfo,
kCGWindowListOptionOnScreenOnly,
kCGNullWindowID
)
def getActiveWindowTitle():
curr_app = NSWorkspace.sharedWorkspace().frontmostApplication()
curr_pid = NSWorkspace.sharedWorkspace().activeApplication()['NSApplicationProcessIdentifier']
curr_app_name = curr_app.localizedName()
options = kCGWindowListOptionOnScreenOnly
windowList = CGWindowListCopyWindowInfo(options, kCGNullWindowID)
txt = ""
for window in windowList:
pid = window['kCGWindowOwnerPID']
windowNumber = window['kCGWindowNumber']
ownerName = window['kCGWindowOwnerName']
geometry = window['kCGWindowBounds']
windowTitle = window.get('kCGWindowName', u'Unknown')
if curr_pid == pid:
activeWindowTitle = ownerName + " - " + windowTitle
return activeWindowTitle
# Windows用
elif sys.platform == "win32":
import win32gui
def getActiveWindowTitle():
activeWindowTitle = win32gui.GetWindowText(win32gui.GetForegroundWindow());
return activeWindowTitle
else:
def getActiveWindowTitle():
return ""
def main():
bufWindowTitle = ""
try:
while True:
activeWindowTitle = getActiveWindowTitle()
if bufWindowTitle != activeWindowTitle:
print(activeWindowTitle)
bufWindowTitle = activeWindowTitle
except KeyboardInterrupt:
sys.exit(0)
if __name__ == '__main__':
main()
実行
作成したら以下のコマンドで実行します。
python get_active_window_title.py
アクティブウィンドウを切り替えるたびにアプリケーション名が表示されるはずです。
できた!
これを指定したサーバーに送信するようにすれば自分がきちんと仕事をしていることがきちんとわかり、「証明しろ!」って言われても大丈夫!!
...大丈夫!
......大丈夫だと思う。