掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
タスクバーのアイコンの列挙方法は? (ID:66915)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
シャノンさん。 ヒントをありがとう。 > Windows XP のタスクバーは、実態はツールバーのようなので、ツールバーボタンを列挙すればできるでしょう。 僕もウインドウを列挙して調べてみました。 確かにツールバーのようです。 下に結果を載せておく。 000500AC[Shell_TrayWnd] ├00040118[Button]スタート ├00040138[TrayNotifyWnd] │├00050064[TrayClockWClass]17:59 │├000500DE[SysPager] ││└0009005C[ToolbarWindow32]通知領域 ││ │└0005003E[Button] │ ├00020072[ReBarWindow32] │├0005007A[CiceroUIWndFrame]TF_FloatingLangBar_WndTitle │└000400AE[MSTaskSwWClass]実行中のアプリケーション │ └000400A2[ToolbarWindow32]実行中のアプリケーション │ ├0002006E[tooltips_class32] ├000600A0[DV2ControlHost]スタート メニュー │├000800F2[Desktop User Pane] ││└000900EE[Static]****** ││ │├000700E2[DesktopSFTBarHost] ││└00060090[SysListView32] ││ └000500CE[SysHeader32] ││ │├00060042[Desktop More Programs Pane] ││└000500CC[Button]すべてのプログラム(&P) ││ │├00060142[DesktopSFTBarHost] ││└00090030[SysListView32] ││ └00040074[SysHeader32] ││ │└00060044[DesktopLogoffPane] │ └00050104[ToolbarWindow32] │ ├000400B0[tooltips_class32] ├00020070[tooltips_class32] ├0004009A[CiceroUIWndFrame]CiceroUIWndFrame ├0008011C[tooltips_class32] ├00040046[tooltips_class32] └000300DA[IME]Default IME ※表示は左から順にウインドウハンドル値、クラス名、タイトル名となります。 ※「******」はユーザ名が入ります。 タスクバーを簡略化すると [Shell_TrayWnd] └[ReBarWindow32] ├[CiceroUIWndFrame]TF_FloatingLangBar_WndTitle └[MSTaskSwWClass]実行中のアプリケーション └[ToolbarWindow32]実行中のアプリケーション こうなるようです。 タスクトレイを簡略化すると [Shell_TrayWnd] └[TrayNotifyWnd] ├[Button] ├[SysPager] │└[ToolbarWindow32]通知領域 └[TrayClockWClass]17:59 こうなるようです。 ついでにスタートボタンを簡略化すると [Shell_TrayWnd] └[DV2ControlHost]スタート メニュー ├[Desktop User Pane] │└[Static]****** ├[DesktopSFTBarHost] │└[SysListView32] │ └[SysHeader32] ├[Desktop More Programs Pane] │└[Button]すべてのプログラム(&P) ├[DesktopSFTBarHost] │└[SysListView32] │ └[SysHeader32] └[DesktopLogoffPane] └[ToolbarWindow32] となるようです。 全部 Windows XP Home SP2 です。 > タスクバーの実装は OS によって変わり得るので、ツールバーだと決め打ちにすることは避けたほうがいいでしょう。 http://homepage1.nifty.com/kazubon/progdoc/tclock/taskbarhistory.html のリンクに詳しく書いてあるようですね。 XP 以外は試せないので参考になるページです。 > ITaskBarList という COM インターフェイスもありますが、名前に反して、 > タスクバーボタンの列挙はしてくれません。とんだ期待はずれ。 ネットで調べたら次のリンクを見つけた。 http://www.runan.net/program/tips/sdk_10_ITaskbarList.shtml 追加と削除か。何かに使えそうな気が…。 > あとは、タスクバーにボタンが表示される条件を満たすウィンドウを列挙するといった > 間接的な方法になりますが、確かな条件は知りません。 ウインドウの列挙と階層構造で表示するプログラムで確認しましたが タスクバーのボタン(ハンドル)は列挙できなかったです。 つまり「ToolbarWindow32」は子のウインドウを持っていないというわけ。 ツールバーのボタンは「ウインドウハンドル」を持たないのでしょうかね。 でも SendMessage などで取得すれば何か帰ってきた気が…。 ツールバーはあまり詳しくないや〜。 > タスクトレイも、XP ではツールバーですが、他の OS ではわかりません。 http://homepage1.nifty.com/kazubon/progdoc/tclock/taskbarhistory.html このリンクをまとめると Windows 95、NT SysTabControl32 (不明) Windows 98 SysTabControl32 (不明) Windows Me、2000 SysTabControl32 ToolbarWindow32 Windows XP ToolbarWindow32 ToolbarWindow32 となるようです。ちなみに左側から OS、タスクバー、タスクトレイ(通知領域)の順です。 Windows 95、98、NT はタスクトレイ部が「TrayNotifyWnd」となっています。 これはただのウインドウですか? そしてこのウインドウに単にアイコンを表示して 「タスクトレイ」部分と呼んでいるのでしょうか? どう思います? いろいろと調べたらまた書き込みます。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.