Windowsでps+kill的なモノを作りたい・・・が、すでに用意されていた

Cygwinのpsでは、cygwin管轄のプロセスしか表示してくれない。というか、Cygwinのpsって何見てるんだろ・・・?カーネルのプロセステーブルなんて持ってるわけないし・・・。
ま、それはそれとして。うちの社内アプリのつくりがヘボイので補完する仕組みを色々作ってるんだけど(リストビューのテキストを取ってくる話とか)、ゴミプロセスが残って正常終了しないのが気になる。どうせエラーハンドリングをろくにしてないんだろうと思ってるんだけど、2重起動だけはしっかり防止しているのでいちいちタスクマネージャーから消さないといけない。
ならば、ps + kill的なものをWindowsで実装しようと。

  • ps : トップレベルのウインドウをEnumWindows()で列挙
  • kill : そのウインドウに対して適切なウインドウメッセージを送りつける、またはkill的なAPIがあればそれを使う

という感じで実装できそう。あとは設計をどうするかだなー。WindowsにPIDってあるのかな。プロセスハンドルはあるけど・・・めんどくさいからウインドウハンドルをPIDにすればいいか。by wHnd または by module nameでkillするような感じで。
あとはkillに相当する機能だな。ウインドウメッセージがあればいいんだけど、なければプロセスハンドルを取ってきてterminate的な何かを実行することになるんだろう。その辺も調べてみようかな。

ええええええ

標準であった・・・!
例えばメモ帳を終了させたいときはこんなかんじ。

$ taskkill /f /im notepad.exe

ま、まあ、時間を無駄にしないでよかった。WindowsCLIは探せばまだまだありそうだなぁ