2020年3月18日水曜日

PowerShellでWindowsを操作

PowerShellを少し使ってみて驚いたのが
Win32APIや.net Frameworkを直接扱えることです。
例えば
PS > $pss=[System.Diagnostics.Process]::GetProcesses()
PS > foreach($ps in $pss){if($ps.MainWindowTitle.length -ne 0){echo $ps.MainWindowTitle}}
と打ち込めば、開いているアプリケーションの
ウィンドウのタイトルが一覧表示されます。
つまりウィンドウを直接扱うことができるのです。
まあこれは.netのGetProcesses()を呼び出すまでもなく
用意されているpsコマンドを使えばよく
PS > $pss=ps
PS > foreach($ps in $pss){if($ps.MainWindowTitle.length -ne 0){echo $ps.MainWindowTitle}}
のようにすることもできます。
もちろんこれらコマンドをスクリプトファイルに書き込んで
プログラム化しておくことも可能です。

そしてなんとあらかじめ
PS > Add-Type -AssemblyName Microsoft.VisualBasic
を実行しておくことでVisualBasicの機能を呼び出すこともできます。
例えばフリーのテキストエディタ[サクラエディタ]のウィンドウに
フォーカスを当てて"abc"[Enter]と入力するには
PS > Add-Type -AssemblyName Microsoft.VisualBasic
PS > $p = ps | ? {$_.Name -eq 'sakura'} | select -First 1
PS > [Microsoft.VisualBasic.Interaction]::AppActivate($p.Id)
PS > [System.Windows.Forms.SendKeys]::SendWait("abc{ENTER}")
で可能です。
超強力です。応用が広がります。
Windows用のツールを作るとなったとき、
第一選択肢はPowerShellになりますね。

0 件のコメント:

コメントを投稿