windowsでアプリケーションを起動し、ウィンドウを移動、サイズ変更する方法について紹介します。
使用するライブラリ
- subprocess
- ctypes
この2つのライブラリを使用します。subprocessは他のプログラムを起動するために使用します。次に、ctypesはWindowsの共有ライブラリ(windll)を呼び出すために使用します。ctypesを使用することで、subprocessを使って起動したプログラムのウィンドウを操作します。
ライブラリのより詳しい説明
subprocess.Popen
プログラムを起動し、起動したプログラムのプロセスIDを返します。今回プロセスIDは使いません。
windll.user32.GetForegroundWindow
最前面で動いているウィンドウのハンドルを取得します。ハンドルとはウィンドウを特定し、操作するために使うIDのようなものです。
windll.user32.GetWindowRect
ウィンドウの外側のサイズを取得するために使用します。
windll.user32.MoveWindow
ウィンドウを動かしたり、サイズを変えるのに使います。
サンプル
最後に、google chromeを横並びに開くサンプルを紹介します。画面の解像度は環境に応じて修正が必要です。また、他のウィンドウをクリックしたりするとうまく動きません。
#coding: utf-8
from ctypes import *
import subprocess
from ctypes.wintypes import *
import time
google=0
google2=0
child_process = subprocess.Popen(r'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe')
time.sleep(5)
google = windll.user32.GetForegroundWindow()
child_process = subprocess.Popen(r'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe')
time.sleep(5)
google2 = windll.user32.GetForegroundWindow()
windll.user32.MoveWindow(google, -7, 0, int(1920/3)+7, int(1080), 0)
windll.user32.MoveWindow(google2, int(1920/3), 0, int(1920/3), int(1080), 0)