program puffbits; { 虫の眼に比べてシンプルな拡大鏡。 ※課題 ・ショートカットヘルプの実装。 2015-09-30:Ver 2.1.19.111 ・EnabledがFalseのウィンドウを補足できなくなっていた不具合を修正。  2015-03-14の版で紛れた不具合。 2015-03-14:Ver 2.1.18.111 ・マウスで触れないウィンドウの情報が取得できなかった不具合を修正。 ・スムーズキャプチャを選択するとホイールで拡大縮小が出来にくくなっていた不具合を  修正。 2015-03-06:Ver 2.1.17.110 ・Aero テーマが有効な場合にRectの取得に失敗していた不具合を修正。  2013-11-21に紛れた不具合。 2013-11-21:Ver 2.1.16.110 ・Aero テーマが有効な場合「自身をキャプチャしない」機能を無効にするようにした。 ・Aero テーマが有効な場合のRectの取得方法を変更。 2012-11-21:Ver 2.1.15.110 ・64bitOSで32bitプロセスから64bitプロセスの実行ファイル名を取得できなかった不具合  を修正。 2011-09-26:Ver 2.1.14.106 ・ショートカットカスタマイズのキーリストの「セット」ボタンのEnabledが常にFalseに  なってしまっていた不具合を修正。 ・「キャプチャ/実寸表示」と「カスタマイズ/ショートカット設定」のHintがセットされ  ていなかった不具合を修正。 2011-09-21:Ver 2.1.13.106 ・ショートカットカスタマイズウィンドウにヒント表示ボックスを配置。 2011-06-23:Ver 2.1.12.106 ・メニューに「バージョン情報」を追加。 ・[Ctrl]を押しながらコピーした時にマルチバイト文字が文字化けしていた不具合を修正。 ・[Ctrl]を押しながらコピーした時に実行プログラムが前面に表示されるようにした。 ・一時停止を2回以上行うと範囲エラーが起きてしまう不具合を修正。  恐らく2011-05-07:Ver 2.1.10.104の時に紛れたバグ。 2011-05-10:Ver 2.1.11.104 ・TScreenのMonitorプロパティがモニター情報の変更に追随しないことからモニター情報  が変わった後にツールバーのドロップダウンメニューを表示させようとするとアクセス  違反のエラーが出てしまっていた不具合を修正。 2011-05-07:Ver 2.1.10.104 ・一時停止の後モニター情報が変わり解像度が変わるとキャッシュ画像とモニターの解像  度が食い違うことから本来移動できるはずの位置に移動できなかったりその逆に移動で  きないはずの位置に移動できてしまっていた不具合を修正。 ・一時停止時と定点キャプチャ時にマイナスの位置のモニターの拡大画面上をダブルクリッ  クしてもその位置までいかなかった不具合を修正。 2011-04-30:Ver 2.1.9.103 ・ユーザー指定座標を長さの表示に変更。  Tiny-BUGに実装した長さの表示が存外使い勝手が良かったので。 2011-04-28:Ver 2.1.8.103 ・カーソル移動の後すぐ描画していなかった不具合を修正。 2011-04-08:Ver 2.1.7.103 ・「自身をキャプチャしない」設定の時のちらつきを軽減。 ・フォームのサイズ変更した後マウスを動かさずにいるとキャプチャが間引かれるためデ  スクトップ画面と拡大画面の違いが目立つことがあったのでサイズ変更後一度だけ更新  頻度を下げるようにして対処。 ・一時停止時や定点キャプチャ時に矢印ボタンでモニターの範囲外に移動できてしまって  いた不具合を修正。 2011-04-07:Ver 2.1.6.103 ・セカンダリモニターがマイナスの位置にある時に一時停止でキャプチャできていなかっ  た不具合を修正。 ・同じく一時停止時と定点キャプチャモードの時にマイナス位置にあるモニターに掴んで  移動できなかった不具合を修正。 2011-03-03:Ver 2.1.5.103 ・自身のファイル名をUnicodeな文字を含んだものに変えた場合の一時ファイル名の主ファ  イル名にUnicodeを含まないものにするように修正。  関連付けされた実行ファイルがUnicede対応ではない場合への最低限の対処。  わざわざこのプログラムのファイル名をUnicodeな文字を含んだものに変えるという特別  な場合に対しての(あまり必要性もない)修正。  ただし自身をUnicodeな文字を含むフォルダに置かれた場合は関連付けされた実行ファイ  ル側で対処されていない限りどうにもならないことなので対処しきれない。 2011-02-11:Ver 2.1.4.102 ・[Ctrl]を押しながらコピーしたときプログラムのパスにUnicodeな文字があると一時ファ  イルを作成できず関連付けされたプログラムへ渡せなかった不具合を修正。 2011-02-10:Ver 2.1.3.102 ・起動中にシステムを終了させたりログオフさせたりした場合設定を保存できなくなって  いた不具合を修正。 2011-02-07:Ver 2.1.2.102 ・起動時「常に前面に表示」が外れてしまう不具合を修正。 2011-01-21:Ver 2.1.1.102 ・DLLプリロード攻撃対策。 2011-01-10:Ver 2.1.0.102 ・設定ファイルをバイナリでもつように変更。 2010-12-31:Ver 2.0.7.102 ・一時停止の更新機能実装。 ・グリッドの色に半透明を追加。  見やすいので再実装。 2010-12-28:Ver 2.0.6.102 ・チェック状態のツールボタンを押したままマウスを動かしてツールボタンの範囲外にす  るとツールボタンのチェック状態が外れてしまう不具合を修正。 ・一時停止時のウィンドウ情報のキャッシュの仕方を虫の眼と同じにした。  トップレベルウィンドウのみウィンドウリージョンも保持するようになったのでタイト  ルバーの丸みの部分の判定を間違わないようになった。  その分遅くなった。 ・モニタークラスを余計にCreateしていたミスを修正。 2010-12-19:Ver 2.0.5.101 ・ウィンドウ情報から「コントロールID」削除。  シンプルに。 ・「自身をキャプチャしない」がオフのときもAlphaBlendをTrueにしていたのを取りやめ。  一時停止時に少しもたつくけれども通常のキャプチャでCPUをあまり使わないように。  また9x系やNTでも動くように。 ・一時停止時に他のレイヤードウィンドウなトップべレベルに隠れているトップレベルウィ  ンドウの情報が取得できなかった不具合を修正。 ・レイヤードウィンドウで透過させるウィンドウの表示の仕方をキャプチャ時と一時停止  時で一緒にしていたのをキャプチャ時には透過領域の判定を生かすように変更。 2010-12-17:Ver 2.0.4.101 ・ウィンドウ情報から「ウィンドウスタイルを詳細表示」と「メインウィンドウに追従」  を削除。  シンプルに。 ・オプションから「ツールバー」を削除。  シンプルに。 ・グリッドを引く最低倍率を3倍から4倍に変更。 ・倍率が低くて中心のグリッドだけ引く場合にも枠線引くように修正。 ・コードの見直し。不要なルーチンを削除。 2010-12-16:Ver 2.0.3.101 ・「自身をキャプチャしない」オプション追加。  拡張ウィンドウスタイルにWS_EX_LAYEREDがついているレイヤードウィンドウをキャプ  チャしない設定。  一時停止時のキャプチャ画像表示や情報表示もそれに合わせてアップデート。 2010-12-03:Ver 2.0.2.101 ・一時停止と定点キャプチャ時にキャプチャポイント移動用ボタンを表示するようにした。 ・常に手前に表示でエラーが出ることがあった不具合を修正。 ・ショートカットのカスタマイズ用フォームを起動時に作成していた間違いを修正。 2010-11-21:Ver 2.0.1.97 ・ウィンドウスタイルの表示でメインウィンドウがモニターの右端にある時スタイルウィ  ンドウがモニターの左端に飛んでいってしまう不具合を修正。 Form.ShowやForm.Visibleとするとモニター内に無理やりウィンドウを再配置してしまう (多分Delphiの)仕様のようだ。 ・「ウィンドウスタイル」を表示する時スタイルウィンドウがアクティブになり、メイン  ウィンドウが非アクティブになってしまう不具合を修正。 2010-10-30:Ver 2.0.0.97 ・HTMLカラーの表示で頭の'#'と取り除いて表示するように変更。  HTMLで16進表記の場合は'#x'であることに気づき、いっそ無くしてシンプルに。 ・ウィンドウ情報のウィンドウスタイルのメニューを他と分けて「メインフォームに追従」  を追加。 ・ウィンドウ情報に「コントロールID」を追加。 ・ショートカットのカスタマイズに対応。 メジャーバージョンアップ。 2010-10-11:Ver 1.5.6.96 ・サブグリッドをキャプチャポイントを中心に引くように変更。  キャプチャポイントを始点にして画面のピクセル数を数えやすくするため。 ・「コピー」の「すべてのテキスト情報をコピー」でウィンドウ情報とウィンドウスタイ  ルの詳細の間に空行と'ウィンドウスタイル詳細'の文字を入れて分かりやすくした。 2010-10-09:Ver 1.5.5.96 ・ウィンドウテキストが非常に長い場合(メモコントロールなど)無言で落ちてしまう不具  合を修正。 2010-10-01:Ver 1.5.4.94 ・カーソル位置の「モニター座標」削除。 ・ウィンドウ情報の「親ウィンドウ」削除。 ・ウィンドウ情報に「ウィンドウスタイル」を追加。 ・情報表示欄の高さの計算と情報表示とコピーの各ルーチンを共通化。  情報表示項目の増減に対処しやすいように。 2010-09-23:Ver 1.5.3.90 ・レイヤードウィンドウの画像もキャプチャできるように修正。 ・Unicode文字がある場合のコピーでもファイルへはUTF-8で保存せずShift-JISに変換して  保存するように変更。  クリップボードへのコピーはUnicode対応で変わりなし。 ・Shiftキー併用のコピーで本来は違ったフォーマットでコピーするはずがそうはなってい  なかった不具合を修正。 2010-02-11:Ver 1.5.2.85 ・ウィンドウ情報のテキストが取得できなかったウィンドウあったのを取得できるように  改善。 2010-02-09:Ver 1.5.1.84 ・一時停止で保存しておいたウィンドウの情報の並びが間違っていたため正しい情報を取  得できていなかった致命的な不具合を修正。 2010-02-07:Ver 1.5.0.82 ・虫の眼がカスタマイズの充実に伴い肥大化してきたのでその機能を削ってシンプルにし  たサブセット版を作成。  2009-08-16の頃の感じ。 } //{$DEFINE DEBUG} (* {$IFDEF DEBUG} HeapChecker, {$ENDIF} *) uses my_safedll, {$IFDEF DEBUG} HeapChecker, {$ENDIF} Forms, general in 'general.pas', winlist in 'winlist.pas', my_settingfile in 'my_settingfile.pas', my_monitor in 'my_monitor.pas', main in 'main.pas' {App_Puffbits}, setting in 'setting.pas' {App_PuffbitsSetting}, custom_shortcut in 'custom_shortcut.pas' {App_CustomShortCut}; {$R *.res} begin {$IFDEF DEBUG} HeapChecker.OutputClassName := True; HeapChecker.DumpLeakMemory := True; {$ENDIF} Application.Initialize; Application.Title := 'puffbits'; Application.CreateForm(TApp_Puffbits, App_Puffbits); Application.Run; end.