とぴやまのブログ(アーカイブ)

元はてなダイアリー

タスクトレイのアイコンの順序を並び替える方法

http://www.codeproject.com/tools/ShellTrayInfo.asp
■Shell Tray Info - Arrange your system tray icons

久々に届いた CodeProject Newsletter (何故か2通届いている)を何気なく読んでいたら、タスクトレイのアイコンの順序を入れ替える方法が掲載されていた。

"Shell_TrayWnd" → "TrayNotifyWnd" → "SysPager" → "ToolbarWindow32" と FindWindowEx()で子ウインドウハンドルを探して取得する。 ToolbarWindow32 扱いだから Toolbar Control が使える。

TB_BUTTONCOUNT で個数を調べ、 TB_MOVEBUTTON で順番をを入れ替えることが出来る。 更に(これが肝となるところだが)、TB_GETBUTTON で取得できる ((TBBUTTON)tb).dwData の構造を解析されており、これによってウィンドウハンドルを取得し、プロセス情報を取得している。

他、hidden なアイコンの判別法とか他プロセスのメモリを読み出す方法とか。あとは、バッチ処理で使いやすい UI があると良いですね。

ソース、実行ファイルのダウンロードには、ユーザ登録(無料)が必要。