winStyle
すべてのウィンドウをツリービューに表示し、ツリービューで選択したウィンドウの各種情報を表示するツール。
新着情報
2015-03-06:Ver 1.2.2.14 リリース。
一件の不具合修正。
目次
ウィンドウの各種情報を表示するツールです。
左側のツリービューで選択したウィンドウの各種情報を右の情報欄に表示します。
ついでなので選択したウィンドウの位置やサイズを変えたり表示、非表示の切り替えなどのウィンドウ操作も行えるようにしました。
ツールバーの下に選択ウィンドウのプログラム名を表示します。
右側の情報欄はウィンドウ情報と実行ファイルのバージョン情報とウィンドウスタイルをタブで切り替えて表示します。
ウィンドウ情報
ハンドル |
ウィンドウハンドル。
16進値と10進値で表示。 |
クラス名 |
クラス名。
ウィンドウの親子関係をインデントで表現。
GetClassName APIで取得した値。 |
テキスト |
ウィンドウのキャプションあるいはテキスト。
GetWindowTextW APIとWM_GETTEXTメッセージで取得した値。 |
ウィンドウサイズ |
ウィンドウのタイトルバーや枠を含めたサイズ。
(Left、Top) 幅 高さ
DwmGetWindowAttribute API もしくは GetWindowRect APIで取得した値から算出。
LeftとTopの値は親ウィンドウのクライアント座標からのLeftとTopの値。
親ウィンドウのハンドルが0であればデスクトップ座標からのLeftとTopの値。 |
クライアントサイズ |
ウィンドウのクライアントのサイズ。
GetClientRect APIで取得した値から算出。 |
クライアント原点 |
クライアントの原点のスクリーン座標。 |
RECT |
RECT。
ウィンドウの外接長方形の四隅(Left、Top、Right、Bottom)のスクリーン座標の値。 DwmGetWindowAttribute API もしくは GetWindowRect APIで取得した値 |
DwmGetWindowAttribute API |
DwmGetWindowAttribute API で取得した値。
DwmGetWindowAttribute API が未実装の環境(Vista以前)なら「-」を表示。
DwmGetWindowAttribute API が失敗(トップレベルウィンドウ以外等)なら「エラー」を表示。 |
GetWindowRect API |
GetWindowRect API で取得した値。 |
コントロールID |
コントロールID。
GetWindowLong API の第二引数に GWL_ID を指定して取得した値。 |
Unicode |
Unicodeに対応しているかどうか。
IsWindowUnicode APIの戻り値。 |
Visible |
ウィンドウの可視、不可視。
IsWindowVisible APIの戻り値。 |
Enabled |
ウィンドウの有効、無効。
IsWindowEnabled APIの戻り値。 |
プロセスID |
|
スレッドID |
|
アプリケーションインスタンス |
|
スタイル情報
右側にはツリービューで選択したウィンドウのスタイルの詳細情報を表示します。
GetWindowLong APIで取得した値と各スタイルの値を単純につき合わせ、該当するものだけを表示するようにしています。
各スタイルの情報は
- スタイルの16進値
- スタイルの定数識別子
- 簡単な説明
となっています。
表示するスタイルは
- ウィンドウスタイル
- 拡張ウィンドスタイル
- ボタンコントロール
- エディットコントロール
- スタティックコントロール
- コンボボックス
- リストボックス
- スクロールバー
になります。
ウィンドウスタイルと拡張ウィンドウスタイルは常に表示します。
その他はオプションで選択することで表示します。
ツリービュー
左側にはウィンドウの並びをツリービューで表示します。
並び順はEnumWindows APIとEnumChildWindows APIの列挙順です。
各ウィンドウの情報は左から順に
- ウィンドウハンドル
16進値と10進値
- クラス名
- ウィンドウの位置とサイズ
(Left,Top 幅x高さ)
- ウィンドウのテキスト
テキストを二重引用符で囲って表示。
- 実行ファイル名
になっています。
このツリービューで選択したウィンドウの各種情報を右の情報欄に表示します。
- リアルタイムでウィンドウの情報を更新するわけではありません。
ウィンドウの監視用ではありません。
- 無闇にウィンドウ操作を行うとエライことになることがあります。
特にデスクトップに対し「終了」や「非可視」、「無効」を適用したりするとリセットボタンのお世話になるなど大変な目にあいます。
動作環境
Windows XP SP3でのみ動作確認。
2000やVista、Windows7でも多分大丈夫だと思います。
95や98、meでは動きません。
インストール
専用のフォルダを作りwinStyle.exeをコピーしてください。
レジストリには何も書き込みませんがプログラムのあるフォルダに設定ファイルを作ります。
アンインストール
専用のフォルダを作っていた場合はそのフォルダごと削除すればOKです。
専用のフォルダを作らなかった場合は下記のファイルを削除してください。
- winStyle.exe - プログラム本体。
- winStyle.ini - 設定ファイル。
- winStyle.bmp - Ctrlキーを押しながらキャプチャを行った時に作られる作業ファイル。
- winStyle.txt - Ctrlキーを押しながらコピーを行った時に作られる作業ファイル。
レジストリには何も書き込みません。
winStyle
winstyle.exe 2016-08-25:Ver 1.2.3.14
ファイルは圧縮していません。
ダウンロードしてそのまま実行できます。
ソースコード
ソースコードは公開しているというよりもバックアップ目的です。
なので見通しは悪いですしこれらとは別にXE用の共通ライブラリも全部ダウンロードしてセットアップしないとコンパイルできません。
- 表示更新
ツリービューの表示を最新のものにします。
- 可視トップレベルウィンドウのみ
トップレベルウィンドウのうち可視ウィンドウのみを表示します。
- キャッシュ情報を表示
選択ウィンドウの情報を現在のものではなく取得時のもので表示します。
- 検索
検索するウィンドウのハンドルを指定します。
- ハンドル検索
ツリービュー中のウィンドウから指定のハンドルに一致するものを検索して選択状態にします。
- 16進値で検索
ハンドルを16進値で検索します。
- ボタン
ボタンコントロールのスタイルを表示します。
- エディット
エディットコントロールのスタイルを表示します。
- スタティック
スタティックコントロールのスタイルを表示します。
- コンボボックス
コンボボックスのスタイルを表示します。
- リストボックス
リストボックスのスタイルを表示します。
- スクロールバー
スクロールバーのスタイルを表示します。
- 元のサイズに戻す
選択ウィンドウの最小化、最大化を解除し元のサイズに戻します。
- 移動
選択ウィンドウを移動します。
- サイズ変更
選択ウィンドウのサイズを変更します。
- 最小化
選択ウィンドウを最小化します。
- 最大化
選択ウィンドウを最大化します。
- 閉じる
選択ウィンドウを閉じる、あるいは終了します。
- 常に手前に表示
選択したプログラムを常に手前に表示します。
- 常に手間に表示を解除
選択プログラムが常に手前に表示状態になっていたらそれを解除します。
- 前面に表示
選択プログラムを前面に表示します。(SetForegroundWindow APIを呼び出します)
- 一番手前に移動
選択ウィンドウをZオーダーの一番手前に置きます。
- 一番奥に移動
選択ウィンドウをZオーダーの一番奥に置きます。
- モニター間移動
マルチモニター環境で選択プログラムをモニター間で移動させます。
- 可視、非可視の切り替え
選択ウィンドウの可視、非可視を切り替えます。
- 有効、無効の切り替え
選択ウィンドウの有効、無効を切り替えます。
- キャプチャ
選択ウィンドウをキャプチャしてクリップボードへコピーします。
プログラムを起動させると現在デスクトップ上で起動している全プログラム中でトップレベルウィンドウが可視(見える)状態のウィンドウをツリービューに表示します。
ツリービューに表示されたウィンドウを選択することでそのウィンドウの各種情報とスタイルの詳細がそれぞれの情報欄に表示されます。
非可視(見えない)状態のウィンドウもツリービューに表示させる場合は「可視トップレベルウィンドウのみ」メニューのチェックを外します。
ツールバーのボタンをオフにすることでも可能です。
「キャッシュ情報を表示」にチェックが入っていると情報を取得(更新を)した時点の情報を表示します。
チェックを外すとツリービューのウィンドウを選択する度にその時点の情報を表示するようになります。
ツリービューの情報は選択するだけでなくツリービューの描画が更新される時にも現在の情報を表示するようになります。
ただしタイマーを使って明示的に更新させているわけではないのでリアルタイムで情報が続々と更新されるわけではありません。
そのためツリービューには古い(更新されていない)情報と新しい情報が混在します。
またZオーダーの並びは「最新の情報に更新」を行わないと更新されません。
※課題
- ウィンドウへの各種操作を行った後の状態の変化をツリービューへ反映。
現状サイズや位置の変更は再描画を行わせることで可能だがZオーダーの変化に対応できていない。
2016-08-25:Ver 1.2.3.14
- APIテストを追加。
- ファイル情報に64ビットアプリか32ビットアプリかの表示を行うようにできた。
- 現状、ファイルの日付がエクスプローラのものと2秒違う不具合あり。
2015-03-06:Ver 1.2.2.14
- Aero テーマの時トップレベルウィンドウ以外のウィンドウのRECTの取得に失敗していた不具合を修正。
2015-02-05:Ver 1.2.1.14
- ウィンドウスタイルのテキストをRichEditボックスに表示する形式を少し改善。
- WS_EX_TRANSPARENTのメッセージにWS_EX_LAYEREDとの併用事項を追加。
2013-10-20:Ver 1.2.0.14
- ウィンドウ情報、ウィンドウの実行ファイル情報、ウィンドウスタイルの三種類の情報をフォームの右側にまとめ、タブで切り替えて表示するようにした。
- ウィンドウスタイルの変更でレイヤードウィンドウをセットした時、対象ウィンドウの表示が更新されない不具合を修正。
- 実行ファイル名の検索に対応。
- 検索語をスペースを区切りとした複数の語のor検索で行うように変更。
- ウィンドウスタイルのテキストをヒントだけでなくRichEditボックスに表示するようにした。
マイナーバージョンアップ。
2012-10-28:Ver 1.1.0.14
マイナーバージョンアップ。
2012-08-10:Ver 1.0.12.13
2012-04-06:Ver 1.0.11.12
- 情報表示グリッドのコピーでエラーが出る不具合を修正。
2011-06-25:Ver 1.0.10.12
- スクロールバーのスタイルを追加。
- メインメニューを実装。
- 「バージョン情報」を実装。
- ウィンドウ情報、ウィンドウツリー、スタイル情報のコピーを実装。
- 「最前面に表示を解除」コマンドが機能しなかった不具合を修正。
- 検索の16進値オプションを追加。
- [Ctrl]を押しながらキャプチャでbmp画像に関連付けされたプログラムを前面に表示するようにした。
- [Shift]と[Ctrl]を押しながら起動で設定ファイルの読み込みをスキップするようにした。
- [Shift]と[Ctrl]を押しながら終了で設定ファイルの書き込みをスキップするようにした。
2011-05-10:Ver 1.0.9.10
- TScreenのMonitorプロパティがモニター情報の変更に追随しないことからモニター情報が変わった後にツールバーのドロップダウンメニューを表示させようとするとアクセス違反のエラーが出てしまっていた不具合を修正。
2011-04-10:Ver 1.0.8.10
- ウィンドウのEnabledの切り替えができていなかった不具合を修正。
2011-03-10:Ver 1.0.7.10
- 「スタイルセット」を選択するとアクセス違反のエラーが出ていた不具合を修正。
単にスタイルセット用のフォームを事前に作成していなかっただけだった。
2011-03-09:Ver 1.0.6.10
- ウィンドウ操作の「システムメニュー」の「移動」の値が親ウィンドウのクライアント座標ではなくスクリーン座標だったためとんでもないところに吹っ飛んでいってしまう不具合を修正。
2011-02-10:Ver 1.0.5.10
- 起動中にシステムを終了させたりログオフさせたりした場合設定を保存していなかった不具合を修正。
- ウィンドウ操作を行った後、対象ウィンドウの情報表示を更新するようにした。
ツリービューの表示を事前に取得していた情報ではなく表示する時点での情報を表示するように変更した。
- 表示する時点の情報ではなく事前に取得していた情報を表示するオプション「キャッシュ情報を表示」を追加。
2011-01-21:Ver 1.0.4.10
- Dllプリロード攻撃対策。
- ウィンドウのキャプチャ機能実装。
OSがXP以上で対象がデスクトップでない場合はウィンドウが他のウィンドウに隠れていてもキャプチャOK。
ただしレイヤードウィンドウで透過処理しているトップレベルウィンドウの場合は透過された背景画像ではなく透過処理対象の背景色がキャプチャされる点に注意。
2010-12-19:Ver 1.0.3.10
- スタイルセットウィンドウでマウスホールのホイール操作に対応。
- コンボボックスでリストを移動する機能を実装。
2010-12-15:Ver 1.0.2.10
- ウィンドウスタイルのセットで実行対象ではなく実行対象ウィンドウのトップレベルウィンドウの表示をON/OFFすることでスタイルの適用を行うように変更。
その方が確実のようなので。
2010-12-08:Ver 1.0.1.10
- ウィンドウの可視・非可視の切り替えが出来なくなっていた不具合を修正。
2010-11-30:Ver 1.0.0.10
- ウィンドウ操作機能に「移動」と「サイズ変更」「前面に移動」「背面に移動」を追加。
- ウィンドウハンドルの検索機能を搭載。
- ウィンドウスタイルの変更機能を搭載。
- ツールバーを搭載。
それに伴い下部のボタン類を削除。
- ステータスバーにスタイルウィンドウの選択行を表示。
- winfoのような情報を(選択ウィンドウのみではあるけれど)上部に表示。
2010-09-24:Ver 0.2.1.10
- コマンドに「常に前面に表示」「常に前面に表示を解除」「Visible」「Enabled」
「SetForegroundWindow」「モニター間移動」を追加。
- アイコンをワシ(多分ハクトウワシ)のものに変更。
- ウィンドウテキストを取得する汎用関数でSendMessageW APIを使っていたものを SendMessageTimeoutW
API仕様に変更。
これでフリーズしているウィンドウがあってもつられてフリーズすることがなくなるのではないかと期待。
2010-09-03:Ver 0.2.0.10
- コンボボックス、リストボックスのスタイル表示に対応…できていなかった不具合を修正。
- ウィンドウ操作を行う機能を搭載開始。
まずはシステムメニューまわり(最大化、最小化、閉じる)から。
- Visibleの状態を設定ファイルに保存して起動時に反映させていたのを廃止。
必ずVisibieにチェックのついている状態で起動するように変更。
- 取得状態を順次表示するように変更。
マイナーバージョン上げ。
2010-08-12:Ver 0.1.2.10
- コンボボックス、リストボックスのスタイル表示に対応。
- スタイルの判定の不具合を修正。
2009-01-25:Ver 0.1.1.10
- iniファイルの後ろにゴミがついてしまう不具合を修正。
2009-01-20:Ver 0.1.0.10
- wstyleから派生。
winstyle。
- 左にツリービュー、右にリストボックスの形に変更。
- ウィンドウスタイル以外にボタンコントロール、エディットコントロール、スタティックコントロールのスタイルも(選択すれば)表示可能にした。
2009-01-09:Ver 0.0.2.4
- GWL_STYLEとGWL_EXSTYLEを二つのチェックリストボックスに分けて表示するようにした。
(チェックリストボックスのメモリーリークが回避できないので苦肉の策として)
- それに伴いチェックリストボックスのBorderStyleをbsSingleに変更。
別々のリストボックスなのが分かりやすいだろうということで。
- スタイルのセットとリセットの後に再描画していないことへ対処。
ウィンドウを非表示のあと再表示させてるだけの簡易版。
- WM_*スタイルが0であったときの判定の間違いを修正。
mod 10ではなくmod 16($10)でなければならなかった。
2009-01-08:Ver 0.0.1.4
- 「リセット」ボタンでスタイル変更前に戻すようにした。
2009-01-01:作成