program winfo; { 2007-09-06.. マウスカーソル下のウィンドウの各種ウィンドウ情報をトップレベルウィンドウまで遡っ て一覧表示するプログラム。 -------------------------------------------------------------------------------- ※ ・一時停止時にウィンドウ情報のキャッシュ 2017-01-27:Ver 0.4.1.36 ・テキスト取得を簡易にして高速にするオプションを追加。  コンボボックスやリストボックス及び他のウィンドウのエディットボックスのテキスト  の取得をやめて、その分動作は高速になる。 ・フォント選択オプション実装。 ・表示の仕方の変更。  マウスカーソルにかからないウィンドウはアンダーラインで。  非可視のウィンドウは打ち消し線で。  淡色表示が通常表示とあまり変わらず、非常に見分けづらいため。 2016-12-03:Ver 0.4.0.34 ・API Testの表示を追加。 ・コピーに全体をコピーを追加。 ・シンプル表示を削除。 ・表示の順番で見た目に近いやり方を削除。  EnumChildWindowsの列挙順に合わせた表示のみにした。 ・Control IDの表示を10進数のみにした。 2015-03-10:Ver 0.3.17.16 ・ウィンドウスタイルにWS_EX_TRANSPARENTとWS_EX_LAYEREDがセットされているマウスで  触れないウィンドウの情報が取得できなかった不具合を修正。 2015-03-05:Ver 0.3.16.15 ・シンプル表示の時「EnumChildWindowsに合わせる」オプションの値に関わらず  (この後コメントを書いていなかったので何を変更したのか分からない) 2013-01-01:Ver 0.3.15.15 ・Delphi XE2に移植。 ・「W-Size」を 「Wサイズ」、「C-Size」を 「Cサイズ」へそれぞれ変更。 ・表示情報の「位置」を「C原点」に変更。  ウィンドウのLeft,Top値からクライアント原点のスクリーン座標の表示へ。 ・Left,Top値はウィンドウサイズの「Wサイズ」へ表示するように変更。 2011-08-28:Ver 0.3.14.14 ・ハンドルとコントロールIDのコピーが選択セルの一つ下のセルを参照するようになって  いた不具合を修正。 2011-06-24:Ver 0.3.12.14で紛れた不具合。 2011-08-26:Ver 0.3.13.14 ・Control IDの表示に対応。 2011-06-24:Ver 0.3.12.14 ・ハンドルのコピーを16進値と10進値で分けてコピーするように仕様変更。 ・[Ctrl]を押しながら「コピー」でテキストファイルに関連付けられたプログラムに渡し  て実行させる機能を追加。 2011-05-10:Ver 0.3.11.14 ・TScreenのMonitorプロパティがモニター情報の変更に追随しない不具合を回避。 2011-04-11:Ver 0.3.10.14 ・透明ウィンドウの透過部分にマウスカーソルがある場合透過して見えている下のウィン  ドウではなく透明ウィンドウの情報を表示していた仕様を透過していたら下のウィンド  ウの情報を表示するように変更。  ライブラリのアップデートによる変更。 2011-02-10:Ver 0.3.9.14 ・起動中にシステムを終了させたりログオフさせたりした場合設定を保存していなかった  不具合を修正。 2011-01-21:Ver 0.3.8.14 ・DLLプリロード攻撃対策。 2010-10-15:Ver 0.3.7.14 ・Delphi製のプログラムでタイトルバーなしのウィンドウやダイアログウィンドウの位置  が画面の中心からの相対座標で表示される仕様を変更。  親ウィンドウを取得するAPIをGetParent APIからGetAncestor APIに変更したことによる  アップデート。 2010-09-24:Ver 0.3.6.14 ・ウィンドウテキストの取得でSendMessageW APIを使っていたものをタイムアウトのある  SendMessageTimeoutW APIに変更。  フリーズしているプログラムにつられてフリーズしないように。 2010-02-09:Ver 0.3.5.10 ・EnumChildWnindowProcが子ウィンドウを列挙する順番を逆に捕らえていた致命的なミス  発覚。  間違いを修正。  EnumWindowProcもEnumChildWindowProcも両方Zオーダーで上のウィンドウから列挙する  のをEnumChildWindowProcはZオーダーの奥から列挙するものだと思っていた。  …一生の不覚。  2010-02-02:Ver 0.3.4.9 ・「EnumChildWindowに合わせる」オプションにチェックが入っていると対象Windowの太字  表示が正しくない不具合を修正。 2010-01-18:Ver 0.3.3.9 ・親子関係を下から上にではなくEnumChildWindowの列挙の仕方と同じ上から下へ表示する  「EnumChildWindowに合わせる」オプション追加。 2009-06-22:Ver 0.3.2.9 ・フォームスタイルをbsSizeToolWinからbsSizeableに変更。 ・ウィンドウの指定をした後すぐに再描画していなかった不具合を修正。 ・バージョン情報表示を汎用フォームに変更。 2009-05-30:Ver 0.3.1.7 ・アイコンの変更。 2009-03-15:Ver 0.3.0.7 ・UTF-8で保存してあったiniファイルのBOMをShift-JISで書き出すようした後もそのまま  書き出していた不具合を修正。 ・ウィンドウの親子関係をクラス名のインデントで表現する方式に変更。  より直観的になったのではないかと自負してみる。 ・マウス位置にかからないウィンドウも表示できるように変更。 ・シンプル、非可視ウィンドウを非表示、マウス位置にかからないウィンドウを非表示、  すべてのウィンドウを表示の4種類の表示に対応。 ・簡易ヘルプ実装。 マイナーを一つあげ。 2009-01-25:Ver 0.2.2.6 ・iniファイルの後ろにゴミがついてしまう不具合を修正。 2009-01-19:Ver 0.2.1.6 ・マウスジェスチャー対応。  上:常に前面に表示  下:一時停止  左:すべての親を表示  右:簡易表示 ・「すべての親を表示」に変えたとき今まではVisibleの幅を狭めていたのをフォームの  幅を広げるように変更。 ・すべての親を表示と簡易表示を切り替えたときに一時停止していてもウィンドウ情報を  アップデートするように変更。 ・実行ファイル名を表示しているラベルをドラッグして移動できるように変更。 2008-12-12:Ver 0.2.0.5 ・コピーのUnicode対応。  これまた今までやってなかったのかと… ・起動時に画面外に表示しないように調整。 ・セル幅を調整する時にタイトルより下のセルにマウスカーソルを持っていってマウスアッ  プした場合にフォームの横幅の調整がなされない不具合を修正。 ・一時停止時の表示色を変えるようにした。 ・「すべての親を表示」でToplevelの表示を廃止。Ownerの上のウィンドウがトップレベル。 ・クラス名を除く項目の表示オプション追加。 マイナー一つあげ。 2008-02-10:Ver 0.1.5.2 ・テキスト欄のウムラウトのようなUnicode文字の表示に対応。  今までやってなかったのかと… ・実行ファイル名のUnicode文字の表示に対応。 ・項目ヘッダーのセンタリング。 2007-12-19:Ver 0.1.4.2 ・Unicode欄が正しく表示されていなかった不具合を修正。IsWindowVisibleを使ってた… 2007-12-11:Ver 0.1.3.2 ・タイトルバーにマウスカーソル下の実行ファイル名を表示するようにした。 2007-12-03:Ver 0.1.2.2 ・ポップアップメニューから「ウィンドウの幅を自動調整」「ウィンドウの高さを自動調整」  「ウィンドウ幅を初期化」を削除(というか非表示に)した。シンプルに。 ・「すべての親を表示」のときの横幅の自動調整をやめた。というかスクロールバーの分  だけグリッドの幅を狭めて対処。その方が(プログラムが)簡単なので。見た目はあれ  だけどもまぁ所詮ツールなんで。 ・ウィンドウの自動調整は[Space]に変更。また幅高さともそのときにやるように変更。  よりシンプルにってことで。 2007-10-12:Ver 0.1.2.2 ・IsWindowUnicodeもいれてみた。  けど、どれもこれもみなTrue。意味なかったかなぁ。 2007-09-28:Ver 0.1.1.2 ・「すべての親を表示」で「ウィンドウの幅を自動調整」がチェックされているとき機能  するように変更。高さは[Ctrl]キー押下時に適用。  両方[Ctrl]キー押下時のみにしたほうが良いかも。 ・親子関係の表示をChildからParentに変更。  これで下にあるのが親ウィンドウであるという関係がわかりやすくなったのではなかろ  うか。 2007-09-09:Ver 0.1.0.2 ・マウスカーソル下にあるウィンドウをすべて列挙するように変更。  ただしトップレベルウィンドウどまり+オーナーウィンドウ。 2007-09-08:Ver 0.0.2.2 ・値をコピーできるようにした(結構と手間かかった) ・設定をiniファイルに書きこみ 2007-09-07:Ver 0.0.1.1 ・行に情報、列にウィンドウのレイアウトに変更。 2007-09-06:作成。 } {$DEFINE _DEBUG} uses my_safedll, Forms, main in 'main.pas' {App_TOOLWinfo}, sub_api in 'sub_api.pas' {App_TOOL_APITest}, general in 'general.pas', my_apitest in 'my_apitest.pas'; {$R *.res} begin {$IFDEF _DEBUG} ReportMemoryLeaksOnShutdown := True; {$ENDIF} Application.Initialize; // Application.MainFormOnTaskbar := True; Application.Title := 'ウィンドウ情報'; Application.CreateForm(TApp_TOOLWinfo, App_TOOLWinfo); Application.Run; end.