LoginSignup
1
0

More than 1 year has passed since last update.

[10] PowerShell実践例 ... GUIアプリケーションを画面上の指定位置に移動させる

Last updated at Posted at 2021-07-31
本シリーズのトップページ
https://qiita.com/robozushi10/items/0b0605257ad39bc22895

はじめに

PowerShell 6系 で GUIアプリを画面上の特定位置に移動させる処理をした.

このときに下記コードを利用させてもらったので、使用方法をご紹介する. 

利用させてもらったコード置き場

https://superuser.com/posts/1324170/revisions
image.png

手順

1. GUIアプリを特定位置に移動させるコードを配置する

上述の URL のコードjosefz.ps1 として配置する

josefz.ps1

    [OutputType('System.Automation.WindowInfo')]
    [cmdletbinding()]
    Param (
        [parameter(ValueFromPipelineByPropertyName=$True)]
        $ProcessName,
        [int]$X,
        [int]$Y,
        [int]$Width,
        [int]$Height,
        [switch]$Passthru
    )
    Begin {
以下略

2. GUIアプリを最前面に表示させる toactive.ps1 を配置する

[07] PowerShell実践例 ... GUIアプリの消極的自動操作 に記したコードである.

toactive.ps1

Param (
  [parameter(ValueFromPipelineByPropertyName=$True)]
  $ProcessName
)

Add-Type -AssemblyName Microsoft.VisualBasic
Add-Type -AssemblyName System.Windows.Forms

$P = (Get-Process -Name $ProcessName | Get-Unique)

# 選択したアプリケーションをアクティブにする
[Microsoft.VisualBasic.Interaction]::AppActivate($P.Id)

3. 上記 1, 2 のコードを使ってアプリの位置を変える

今回は次のように移動させる.

項目
移動先 画面左上. つまり (0, 0) の位置である
移動させたいアプリ名 ABC
移動後の画面サイズ(幅) 400
移動後の画面サイズ(幅) 500

次のコード「Move-X0Y0W400H500.ps1」を作成する.

Move-X0Y0W400H500.ps1

Add-Type -AssemblyName Microsoft.VisualBasic
Add-Type -AssemblyName System.Windows.Forms

# プロセス名「ABC」のアプリを最前面にする
.\toactive.ps1 -ProcessName 'ABC'

# プロセス名「ABC」のアプリを (0, 0) に移動させて且つ画面サイズを 幅400, 高500 にする
.\josefz.ps1 -ProcessName 'ABC' -X 0 -Y 0 -Width 400 -Height 500 -Passthru

# 移動後もアクティブにしたいので、プロセス名「ABC」のアプリを最前面にする
.\toactive.ps1 -ProcessName 'ABC'

4. Move-X0Y0W400H500.ps1 を実行する

.\Move-X0Y0W400H500.ps1

 

JosefZ さんに感謝.

以上.

 

参考にしたサイト

URL
https://superuser.com/posts/1324170/revisions
1
0
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
0