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 件のコメント:
コメントを投稿