本シリーズのトップページ |
---|
https://qiita.com/robozushi10/items/0b0605257ad39bc22895 |
はじめに
PowerShell 6系 で GUIアプリを画面上の特定位置に移動させる処理をした.
このときに下記コードを利用させてもらったので、使用方法をご紹介する.
利用させてもらったコード置き場
https://superuser.com/posts/1324170/revisions
手順
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 |