puffbits
プログラマ向けデスクトップ拡大鏡の「虫の眼」のサブセット版。
カスタマイズ機能を省いて一覧設定画面をシンプルに。
拡大画面の下に各種情報を表示します。
目次
デスクトップ画面を拡大して表示するいわゆる拡大鏡です。
ピクセルのカラー値やカーソル位置を調べたりフォームの設計をするのに便利なようにと作りこみました。
同じ様な用途の虫の眼やT-BUGとの比較。
- 虫の眼はカスタマイズ機能が充実した高機能版です。
メニュー、ツールバー、ショートカット(マウスジェスチャ)、コピーのカスタマイズに対応しています。
プログラムファイルのサイズが1.2MBもあってしまうメタボなツール。
- puffbitsは虫の眼からカスタマイズ機能と表示情報の一部を削ってシンプルにしたもので、ショートカットとマウスジェスチャのみカスタマイズ可能です。
私があまり必要としなかった表示情報を削除した(私の)普段使い用として作ったものです。
- T-BUGは極小ファイルサイズに挑戦しようということで機能とコードをガリガリ削った今どき不毛なダイエット版です。
機能比較一覧表
画面をちょっと拡大して見たいとか、画面の色の値を取得してホームページ作りに活かしたい等。
また元々Delphiでフォームの設計をするのに便利なようにと作りはじめたのでプログラマ寄りといえる機能を搭載しています。
- 拡大画面にグリッド、ルーラーを表示。
- 画面の色の値をRGB、HTML用、COLORREFで表示。
- マウスカーソルの位置をスクリーン座標、クライアント座標、任意の点からの長さを表示。
- ウィンドウのハンドルやクラス名、サイズなど各種ウィンドウ情報を表示。
- 拡大画像や画面の色の値、カーソル位置情報、ウィンドウ情報などの値をクリップボードへコピー。
- 方向キーでマウスカーソルを1ピクセルづつ移動。
([Ctrl]+ホイールで上下、[Alt]+ホイールで左右に移動も可能)
- 一時停止時に画像をドラッグして移動させることが可能。
移動に合わせた一時停止時点での各種情報の表示が可能。
一時停止時に画像をドラッグして移動させられる機能は、例えば適当に一時停止させておいてから画像をドラッグして移動させたり方向キーでキャプチャポイントの位置を微調整しながらじっくり情報を読み取ることができます。
動作環境
Windows XP SP3、Windows7 SP1で動作確認。
Windows 2000、Vistaでも多分大丈夫だと思います。
95や98、me、NTでも一部制限つきで動くと思いますがもしかしたらだめかも知れません。
インストール
専用のフォルダを作りpuffbits.exeをコピーしてください。
レジストリには何も書き込みませんが以下のファイルをフォルダ内に作ります。
- puffbits.bin - 設定ファイル。
- puffbits.bmp - [Ctrl]+[Z]でコピーした画像ファイル。
- puffbits.txt - [Ctrl]+コピー操作でコピーしたテキストファイル。
puffbits.binはプログラム終了時に必ず作られます。
puffbits.bmpは[Ctrl]キーを押しながら拡大画像のコピー操作を行ったときに作られます。
puffbits.txtは[Ctrl]キーを押しながら各種情報のコピー操作を行ったときに作られます。
アンインストール
専用のフォルダを作っていた場合はそのフォルダごと削除すればOKです。
専用のフォルダを作らなかった場合は下記のファイルを削除してください。
- puffbits.exe - プログラム本体。
- puffbits.bin - 設定ファイル。
- puffbits.bmp - コピーした画像ファイル。
- puffbits.txt - コピーした各種情報のテキストファイル。
レジストリには何も書き込みません。
puffbits
puffbits.exe 2013-11-21:Ver 2.1.16.110
プログラムは圧縮していません。
そのままダウンロードして実行できます。
ソースコード
ソースコードは公開しているというよりもバックアップ目的なので見通しはよくありません。
プログラムを起動させるとマウスカーソルに追従してデスクトップ画面を拡大表示し続けます。
マウスカーソル位置の各種情報はカラー情報、カーソル位置、ウィンドウ情報の各メニューから必要なものを選択して表示することができます。
ツールバーには各種情報の一括オン・オフを行うボタンがあります。
マウスカーソル位置の各種情報はクリップボードへコピーすることができます。
[Esc]キーを押して一時停止させたあとメニューから選択するかコピーコマンドをショートカットキーに割り当てて行います。
[Ctrl]キーを押しながらコピーを行うと画像ファイルあるいはテキストファイルに関連付けられたプログラムにコピー内容を保存したファイルを渡して起動させます。
キャプチャは[Esc]キーを押すことで一時停止できます。
そのときデスクトップ画面とウィンドウの各種情報をキャッシュします。
一時停止中の画面キャプチャや情報表示はキャッシュデータを基に行います。
ここぞという時点で一時停止させてメニューからコピーを選んだり各種操作を行うという使い方ができます。
また一時停止中はマウスでキャプチャ画像をドラッグしたり方向キーでキャプチャポイントを移動させることができるので適当な場所で一時停止させてから微調整しつつじっくり各種情報を読み取ることもできます。
定点キャプチャは通常マウスカーソルに追従するキャプチャポイントを画面の一点に固定してキャプチャし続けるようにします。
定点キャプチャのキャプチャポイントはキャプチャ画像をマウスでドラッグして移動させたり方向キーを使って移動することができます。
メインウィンドウはタイトルバーをつかんで移動させる以外に拡大画面と情報表示画面をつかんで移動させることもできます。
ただし拡大画面をつかんでの移動は一時停止中と定点キャプチャ中はメインウィンドウではなくキャプチャ画像が移動します。
このプログラムにフォーカスがある場合方向キーを使ってマウスカーソルを1ピクセルずつ動かすことができます。
マウスカーソルの微妙な動きを方向キーを使って行うことができます。
[Shift]キーを併用することで(例えば[Shift]+[↑]など)10ピクセルずつの移動になります。
方向キーの他に[Alt]キーと[Ctrl]キーを押しながらマウスホイールを回すことでもマウスカーソルを移動させることができます。
(気をつけないとマウスを持つ手がぶれてしまったりするので正直使い勝手は悪く、私はあまり使っていません)
[Ctrl]キーと[Shift]キーを同時に押しながら起動すると設定ファイルを読み込まず初期設定のまま起動します。
[Ctrl]キーと[Shift]キーを同時に押しながら終了すると設定ファイルを書き込まず終了します。
ショートカットキーとマウスジェスチャはカスタマイズできます。
メニューやツールバー、コピー文字列のフォーマットはカスタマイズできません。
- ズームメニュー
1倍, 2倍, 3倍, 4倍, 6倍, 8倍, 10倍, 12倍,16倍, 20倍の10段階から選択します。
PgUpやPgDnキーまたはホイール操作で倍率を変更できます。
- グリッドメニュー
グリッドおよびルーラを表示するかどうかとグリッドの色を選択します。
画面の5ピクセルごとに色違いでグリッドを引くこともできるので画面のピクセル数を数えるのに便利です。
グリッド表示はグリッド表示のオン・オフを切り替えます。
灰色はグリッドの色を灰色にします。
反転はグリッドの色を画面の色の反転色にします。
半透明はグリッドの色を画面の色より少し濃い色で表示します。
グリッド色選択はグリッドの色をカラーダイアログから選択します。
サブグリッド - なしは画面の5ピクセルごとに違う色でグリッドを表示するサブグリッドを使用しません。
サブグリッド - 青はサブグリッドの色を青にします。
サブグリッド色選択はサブグリッドの色をカラーダイアログから選択します。
- カラーメニュー
画面の色の値の表示形式を選択します。
RGBは画面の色の値を赤(R)、緑(G)、青(B)の成分に分けて表示します。
HTMLは画面の色の値をHTML(16進値)で表記するやり方で表示します。
COLORREFはプログラムで指定するやり方を16進値と10進値で表示します。
- カーソル位置メニュー
マウスカーソルの位置を表示する座標を選択します。
スクリーンはメインモニターの左上隅を原点としたデスクトップ全体の座標です。
クライアントはウィンドウのクライアント領域の左上隅を原点とした座標です。
後ろのかっこつきの座標はクライアントの原点をスクリーン座標であらわしたものです。
上図でいうとスクリーン座標の(113, 78)がクライアント領域の原点ということになります。
そこから右に145, 下に8ピクセルの位置が図の中心の位置(マウスカーソルの位置)ということになります。
ちなみにクライアントの原点にクライアント座標の値を足したものはスクリーン座標と同じになります。
上図でいえば、113+145=258, 78+8=86ということです。
長さは[スペース]キーを押したところを原点とし、そこからマウスカーソルのある位置までの長さを表示します。
上図ではタイトルバーのアイコンの左上隅(スクリーン座標で(299,139)の位置)でスペースキーを押しています。
そこから現在のマウスカーソルの位置(アイコンの右下隅)までの幅と高さを表示しています。
この図の文書アイコンは幅が10で高さが14であることが分かります。
- ウィンドウ情報メニュー
カーソル下のウィンドウ情報の表示をするかどうか選択します。
ハンドルはマウスカーソル下の一番手前のウィンドウのウィンドウハンドルです。
8桁の16進値と10進値で表示します。
クラス名はウィンドウのクラス名です。
テキストはウィンドウのテキストです。
Wサイズはウィンドウサイズのことです。
Left, Top, Width, Heightの順で表示します。
LeftとTopの値は親ウィンドウのクライアント座標です。
Cサイズはウィンドウのクライアント領域のサイズのことです。
Width, Heightの順で表示します。
Left, Topの値は必ず0になるので省略しています。
RectはウィンドウのRect値をスクリーン座標で表示します。
Left, Top, Right, Bottomの順です。
実行ファイルはプログラムの実行ファイル名を表示します。
- コピーメニュー
ズーム画像やカラー情報、カーソル位置情報、ウィンドウ情報をクリップボードへコピーします。
コピーする文字列のカスタマイズはできません。
カスタマイズが必要な場合は虫の眼をどうぞ。
[Shift]キーとの併用で少し違った形式でコピーします。
[Ctrl]キーとの併用で画像とテキストファイルに関連付けられたプログラムを起動して内容を表示します。
ズーム画像ならbmpファイルに関連付けられたプログラムにコピー画像を保存したファイルを渡して起動します。
カラー情報、カーソル位置情報、ウィンドウ情報ならtxtファイルへ関連付けられたプログラムへ情報の値を保存したファイルを渡して起動します。
すべてのテキスト情報をコピーは画像以外のすべてのテキスト情報を表示画面と同じフォーマットでクリップボードへコピーします。
- キャプチャメニュー
一時停止を選択するとキャプチャを一時停止します。
同時にその時点のデスクトップの画像と見えているウィンドウのウィンドウ情報すべてを保持します。
一時停止中はその保持したデータを元にキャプチャポイントを方向キーやマウスのドラッグで移動させて一時停止時点の各種情報を見ることができます。
スムーズキャプチャにチェックを入れるとキャプチャ間隔が短くなり滑らかな動きになります。
その分CPUの負荷は高くなります。
定点キャプチャにチェックを入れるとキャプチャポイントがマウスカーソルに追従せず画面の一点を続けてキャプチャし続けます。
キャプチャポイントは方向キーやマウスでドラッグして移動させたりできます。
- オプションメニュー
各種の設定を行います。
常に前面に表示にチェックを入れると他のプログラムの下に隠れないように常に前面に表示します。
大きいフォントにチェックを入れると情報表示欄の表示に大きいフォントを使用します。
自身をキャプチャしないにチェックを入れると自身をキャプチャしなくなります。
と同時に他のレイヤードウィンドウもキャプチャできなくなります。
一覧設定を選択すると上図の一覧設定ウィンドウを表示します。
各種情報表示とオプション、キャプチャの設定を一括して設定できます。
ショートカット設定を選択するとショートカットキーとマウスジェスチャのカスタマイズを行うウィンドウを表示します。
バージョン情報の表示。
下のURLをクリックするとブラウザーを起動して、ネットに繋がっていればこのページを表示します。
ショートカットキーとマウスジェスチャのカスタマイズウィンドウです。
- レイヤードウィンドウで透過させているウィンドウはキャプチャ時と一時停止時で情報の表示に違いがでます。
キャプチャ時には透過している部分の情報はレイヤードウィンドウではなく見えている下のウィンドウの情報を表示します。
一時停止時は透過している部分もレイヤードウィンドウの情報を表示します。
これは一時停止時にはレイヤードウィンドウの透過領域の情報をキャッシュに持たないので判定ができないためです。
このように下が透けて見えるウィンドウの場合、透けている部分をクリックすると下のウィンドウがアクティブになるので下の見えているウィンドウの情報を表示するのが正しいやり方かと思います。
キャプチャ時は下のウィンドウ(この場合はデスクトップ)の情報を表示します。
一時停止時は下のウィンドウ(この場合はデスクトップ)の情報ではなくレイヤードウィンドウ(Form1)の情報を表示します。
キャプチャ時と一時停止時で情報の表示の仕方が違うのでややこしいですが、このことを利用することもできます。
例えばキャプチャ時には透過領域に差し掛かると下のウィンドウの情報に変わるので境界の判定が出来ます。
一時停止時は透過領域に差し掛かってもカーソル位置情報のクライアント座標はForm1のクライアント座標のままになるのでForm1のクライアント座標を得たい場合に役立ちます。
- VistaやWindows 7のAero テーマには対応していません。
ウィンドウのタイトルバーの四隅の丸い部分にカーソルを持っていっても下の見えているウィンドウの情報ではなくそのウィンドウの情報を表示します。
左がAero テーマ有効、右がAero テーマ無効の時のキャプチャ状態。
左は下に見えているウィンドウではなく自身の情報を表示していますが、左は下に見えているウィンドウの情報を表示しています。
- VistaやWindows 7のAero テーマが有効の場合オプションメニュー中の「自身をキャプチャしない」が無効になります。
2013-11-21:Ver 2.1.16.110
- Aero テーマが有効な場合「自身をキャプチャしない」機能を無効にするようにした。
2012-11-21:Ver 2.1.15.110
- 64bitOSで32bitプロセスから64bitプロセスの実行ファイル名を取得できなかった不具合を修正。
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
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の頃の感じで。