himorogiの日記

主にプログラミングに関することなど。少々ハード(電子工作)についても。

会社の PC の OS が今年の春から Windows7 に移行した。

これまではちょっとしたタスクの自動化をするときは WSH(主にJavascript)を使ってたが 今はなるべく PowerShell にシフトしている。

pipe,pipeline,filter は、けっこう便利。ただし Version 2 なので Linq は自分で(若しくは人様の作った) Library を用意しないと使えないっぽい。

うらぶろぐ @urasandesu: 再考! PowerShell で LINQ - Terrific! LINQ to PowerShell -

困るのは PowerShell から System.Windows.Forms.MessageBox を呼び出すと TopMost がデフォルトで $False になっているため、最前面に出てこないところ。

正直に言って、最前面に出てこない MessageBox の存在理由が分からない。

いろいろ悩んでいたのだけど…C# のコードで ダミーの Form を作ってそこで TopMost を(C# なので $True ではなく)True にし、それを継承して MessageBox に TopMost を True にているものを見つけた。

ざっちのーと 【C#】メッセージボックスを最前面表示させる方法

これを参考に、以下のコードで PowerShell でも MessageBox を最前面に表示できるようになった。

$f = New-Object Windows.Forms.Form
$f.TopMost = $True
[Windows.Forms.MessageBox]::Show($f,"MessageBox の本文","MessageBox のタイトル")
$f.TopMost =$False # ここは必要ないと思うけど…

はてな記法シンタックスハイライトは PowerShell に対応してなかったよorz