- 作品名:
- 「
SCOrPio! 」 - 作者名:
- はりまお
- 制作環境:
- Core i7-4770 3.40GHz + 8GB RAM
- Windows 10 Pro (64bit, 21H1)
- 開発言語:
- Visual Studio Community 2015 (Update 3)
- Visual Basic 2015
- Windows フォーム アプリケーション
- 動作環境:
- .NET Framework 4.5.2
- 高DPI非対応
- 形態種別:
- フリーソフトウェア(ソース同梱)
Vectorさんにも掲載しています。(2016年05月18日〜)
名前 | バージョン | 概容 |
---|---|---|
SCOrPio.exe | 1.3.1.5 | 実行ファイル |
SCOrPio.exe.config | アプリケーション構成ファイル | |
Readme.txt | 説明文(本文) | |
CreateNote.txt | 制作履歴 | |
Lupe_Wormhole | ソース コード等 |
名前 | 概容 |
---|---|
Resume.xml | 終了時の状態を記憶 |
Setting.xml | 設定を保存 |
この SCOrPio! は、『ある部分を拡大して観ること』ではなく、『マウスカーソル(マウスポインタ)をピクセル単位で操ること』に主眼を置いたルーペです。
拙作“HELuPER!”の制作で得た知見を基に再構成したら、シンプルでコンパクト*1な『能動的ルーペ』に生まれ変わりました。
必要な時にだけ呼び出して、目指す座標に狙いを付けるだけで、マウスカーソルを移動(ワープ)してもらえる。そんな、ペイント系グラフィックツール等で細かい作業をする際の、心強いお供です。
SCOrPio! を使用するためには、『.NET Framework 4.5.2』が必要です。【○参考・引用文献/拝借物】に挙げたサイトを参考に、導入しておいてください。
インストールは、適当な場所に作成したフォルダに、ダウンロードした圧縮ファイルを解凍してください。
アンインストールは、解凍先のフォルダを丸ごと削除してください。レジストリの変更や他フォルダへのファイル操作を、一切行っていません。
アップデートは、全てのファイルを上書きしてください。設定・記録ファイルに関しては、互換性を保証していないため、上手く引き継げない場合は再設定を要します。
解凍時や実行時に、セキュリティソフトによってはマルウェアだと判断され、中断されたり削除されたりする場合があるかもしれません(AVGでの報告が1件有り)。
そのような場合は、各セキュリティソフトの説明に従い、自己責任において、本作をスキャン対象外に設定してください。
"SCOrPio.exe"を実行すると、タスクトレイ(通知領域)にアイコンが登録され、使用できるようになります。
終了するには、タスクトレイのアイコンを右クリックしてコンテキストメニューを開き、
を選択してください。常駐したままOSを終了してもかまいません。“ビューア”を呼び出し、“ビュー”内の“照準”をお目当ての座標に合わせ、ビューアを隠すとマウスカーソルがワープする。これが、SCOrPio! を使う基本的な流れです。
ビューアは、マウスカーソル周辺の拡大画像、座標や色の情報、その他の機能を提供します。
呼び出しキー(既定ではAlt+Ctrl)を押すと現れ、放すと隠れます。
タスクトレイのアイコンを左クリックするか、コンテキストメニューの で、一時的に呼び出しキーを無効にできます。再度クリックすれば有効になります。
ビューアのレイアウトは、以下のようになっています。
![]() |
基点 | 座標表示の基点(0,0)となる座標 |
---|---|---|
撮影場所 | 呼び出し時のマウスカーソル座標 | |
照準位置 | 照準を合わせているピクセルの座標 [基点→照準(撮影場所→照準)] |
|
ビュー | 撮影場所周辺を拡大した画像 | |
ピクセル色 | 基数切替スイッチとA,R,G,B値 | |
倍率調整 | スライダとズームボタン | |
コマンド ボタン | 様々な機能ボタン |
ビューは、撮影場所周辺の画像を拡大して表示します。
拡大される範囲は、ビューアのウィンドウ サイズを変更して調整します。
拡大する倍率は、倍率調整のスライダで調整します。その上下にある / ボタンで、現在値の2倍または1/2倍にすることができます。ただし、その結果が上限値を超えたり下限値を割ってしまう場合は、使用できません(ズーム ストッパ機能)。
ビュー内で左クリックすると、その位置を撮影場所にできます(ビューアを出し直すのを省力化)。
また、中(ホイール)クリックで、その位置を基点にできます(撮影場所移動とコマンド ボタンの を省力化)。
ビューには照準があり、ビュー内でのマウスカーソルの動きに連動します。マウスカーソルがビューから出ると、撮影場所(中央)に戻ります。
照準が合っているピクセルに相当する“基点から見た座標”と“撮影場所から見た座標”が、照準位置に表示されます。
呼び出しキーを放してビューアが隠れると同時に、照準で指し示した座標へ、マウスカーソルがワープします。
照準位置のピクセルのカラーコード(A,R,G,B値)を、ピクセル色に表示します。
⇔ スイッチで、10進数表記と16進数表記を切り替えられます。
A,R,G,Bの各要素をクリックすると、その値がクリップボードにコピーされます。
コマンド ボタンには、 , , , , があります。
と は、現在の撮影場所を基点にしたり、基点を原点(主スクリーンの左上座標)に戻したりします。
は、撮影場所を基点の位置に持って行きます。
また、 のために色を記憶する役目もあります。ボタンの色が、現在記憶している色です。
このボタンは、送信の準備をするだけで、実際の送信はビューアを隠すと同時に行われます。
既定パターンでの使用方法は、次の通りです。
設定は、タスクトレイアイコンのコンテキストメニューの
をクリックすると現れる、設定コンソールで行います。各項目の説明は、タイトルバーにある
をクリックし、続けて知りたい項目をクリックすれば表示されるので、参考にしてください。色書式や送信パターンは、.NET Frameworkの《String.Format》/《SendKeys.Send》メソッドそのものです。詳細は、以下のサイトを参考にしてください。ですが、プログラム未経験者には、難物だと思います。ご容赦ください。
作業を進め易いように、予め準備をしておいてください。
余分nが、ビューに収まらないほどに大きくなると、上記のように一発では片付きません。予め、点A'や点B'に目安となるドットを打っておくなどの工夫が必要になります。そんなドット打ちにも、SCOrPio! が役立ってくれるので、臨機応変に作業してください。
点A-点B間に直線を引きたい場合も、同じ要領です。
この様な作業は、『アバウトにやっておいてから改めて調整する』とか『目印となるドットを打つ』などすれば、SCOrPio! を使用しなくても可能なのかもしれません。しかし、そのためには、倍率を調整し、ツールを切り替え、座標を計算し、ドットを数え、チマチマ調整し、時にはスクロールしたりと、画面中を右往左往してそれはそれは面倒で手間が掛かるのです。(本格的にグラフィックツールを使ったことがない作者が、単に上手な使い方を知らないだけなのかもしれませんが。)
方や SCOrPio! では(一見手数が多そうではありますが…)流れるように作業が進み、煩わしさから解放されると考えられます。(「解放されること請け合いです!」と書きたいが、作者の贔屓な見解では、その有効性を担保できないので書けません。)
グラフィックツールによっては、ワープ後のマウスカーソルにガイド線(直線ツール等で、始点からマウスカーソルまで仮に引かれる線)が付いてこない場合があるかもしれません。そんな時でも気にせずボタンを放して確定してみてください。
もし、それで上手く行かないなら、そのソフトは「SCOrPio! なんかに付き合ってらんないッ (`へ´)ゝ」と言っているのです。
配布ファイルに、ソース類も収録しています。不要なら、ソース フォルダを削除してもかまいません。
中身はいたってローテクで、特殊なテクニックや特別なAPI等々を全く使っていません。
制作にあたっては、HELuPER! の主要部分を流用して愚直にコーディングを積み重ねましたが、HELuPER! の思想に起因する諸々の面倒を排除した分、比較的解析し易くなったと思います。お好きなように改造してください。
デバッグ実行すると、出力ウィンドウに下記の例外が表示される場合があります。
これは、例外の発生を利用して、設定ファイルに記述されている色が16進数か名称かを振り分けているためです。
非アクティブという本作の性質上、OSまたは他アプリケーションで機能するショートカットを、呼び出しキーとして使用するわけにはいきません。そうは言っても、誰も使わないなんて確約は得られないわけで、それでも影響を無視できる選択肢となると、修飾キーの組み合わせしかありません(修飾キーなら、APIを使わなくても.NETだけで検知できて棚ぼた)。
しかし、修飾キーの中でもAltキーは、メニュー選択やメニューバーにフォーカスを移動する役目があるため、厄介です。単独で使用できないのはもちろん、Shiftキーと組み合わせても単独と同じ動作をしてしまうし、Altキーが押されているとコンテキストメニューをクリックしても反応しないという弊害も出てきます。ビューアにコンテキストメニューを設ける場合は、Altキーを排除するなど何らかの対策が必要となります(ただ、Alt排除すなわちCtrl+Shiftのみ…これは致命的)。
設定内容が"Setting.xml"に、終了時の状態が"Resume.xml"に、保存されます。実際の作成・書き換え処理は、SCOrPio! の終了時に行われます。これらのファイルが存在しない場合は、既定値で起動します。
"Setting.xml"には、設定コンソールから変更できない項目が含まれています。その項目は、【○資料】⇒《表1》の通りです。
プログラムを簡素にする(手を抜く)ため、これらファイルのバージョン間での互換性維持を考慮していません。あしからず。
"SCOrPio.exe.config"には、半固定パラメータ(プログラム上は不変だが、将来的に作り手側の都合によって変更が生じる可能性のある要素)が記述されています。再ビルドせずに変更を反映する方法として、このアプリケーション構成ファイルを使ってみました。
動作に必須ではないため、無くても起動できます。
これらのファイルは、XML形式のテキストファイル(UTF-8)なのでテキストエディタで変更可能です。ただし、大文字・小文字, 誤字脱字に厳しいので、書き換える際は十分注意してください。
設定コンソールにある模様の一覧(ComboBoxコントロール)には、幾つかの重複があります。これは、一覧の素となっている《Drawing2D.HatchStyle》列挙型自体に、異名で同じ値(模様)の項目が存在するためです(何のため?)。
重複を排除するとなると、何かと厄介なこと(排除した名称を設定ファイルに書かれたりとか…)になりそうだし、該当数も少ないことから、放置しています。
最近では、高解像度のディスプレイも珍しくなくなりつつあり、それに伴って高DPI設定への対応も課題となります。SCOrPio! では、特に高DPI向けた設計をしていない(Windows Form アプリケーション)ので、OSによる自動拡大が行われます。
実際にディスプレイ設定を変更して、SCOrPio! を動かしてみたところ、デスクトップの画像を上手く取り込めないようです。この部分は、.NET Framework の機能を使用して実現しているので、作者では対処の仕様がなく、高DPIに対応できないというのが現時点での結論です。
変革の始まり、それは HELuPER! のコマンドパッドに〔注目点調整〕を工作していた時(Ver.1.11.0.0制作当時)だった。見えたのだ、真に理想とするルーペの姿が。
早速テストプログラムを用意し、その実現性に確信を持ったところで、すぐさま本制作に取り掛かりたかったのは山々。ところがどっこい、2015年はほれ、やれ Visual Studio 2015 だ、それ Windows 10 だ、なんだかんだが重なって延び延びになっちまったもんやから、この胸の高鳴りを抑えるのに苦労したよ。とは言え、そこはそれ、構想から制作まで間が空くなんてのはざらなこと。着手する時にも浸漬的「カイ・カン…」を享楽できるなんて、素敵やん。
HELuPER! の ReadMe にも書いたけど、『ペイントで点から点へ直線を引く』には、『画像を広範に見渡しながらも、マウスカーソルをピクセル単位で操れることが必要』であり『マウスカーソルが指すピクセルを認識するには、その周辺の拡大表示が不可欠』と考え、ルーペに帰結したんやった。
自分の中でのルーペには、MSXで言うところの“グラフサウルス”とか“DD倶楽部”とか“SII ANIME”とかにあるような(…って、ほとんどの人が (?_?)ゝ でしょ〜よ)、拡大画像上で直接ドットを打つなどの作業ができる物と、マウスカーソル周辺をリアルタイムに拡大して座標等を確認する物の2種類があって、今回の問題には後者を用いるのが最適解だと導き出したわけ(この座標確認系ルーペを“ミニルーペ”と呼称しているんやけど、そもそも何でこれをミニって表現しているのか…我ながら謎だ。やっぱり、見た目が小さかったからかなぁ?)。
で、この『常に画面上に存在し、常にマウスカーソル周辺を拡大する』っていうミニルーペ像を、自分の技術力の範疇で何とか形にしたのが HELuPER! やった。
でもね、HELuPER! の助力を得ても、結局マウスカーソルをピクセル単位で操るには、マウスを繊細なタッチで動かすか、マウス⇔キーボード間を往ったり来たりしないとダメなわけで、ここを整理整頓できない限り容易で快適な操作ってのも望めないわけで…。そんなこんなの苦悩と苦心の末、コマンドパッドに〔注目点調整〕が爆誕することとなる。けれど、「こりゃ画期的に便利やわぁ」とつぶやくと共に、ある思いが胸中に渦巻いてしまったのだ。
この思いを素直に形にしたら、“SCOrPio!”になっちゃった。
そう、例えるなら、HELuPER! は『顕微鏡を覗きながらピンセットを使う』感じなのに対して、SCOrPio! は『手術ロボット“ダ・ヴィンチ”を手に入れた』感じ。わかるかなぁ〜、わかんねぇだろうなぁ〜、イャ〜単なる誇大広告ですよ。本人もこんな作業したことないし。でもね、思わずそう言ってしまうほどに、自分の浅くて狭い見聞の中では、革新的発想の転換な閃きやったんやわ。
いやはや、なんですなぁ、今から思えば HELuPER! って、無駄なことを必死にやってたんやねぇ (;´д`)トホホ(← 最近のMS-IMEはいろんな顔文字を出して来るな)。ムムムッ、無駄なんかじゃないやい。HELuPER! がなかったら SCOrPio! もなかったんやからなッ!
え〜と、どうでもいいことやけど、SCOrPio! の由来でも書きます。
まず、マウスカーソルがワープする様から、プロジェクト名が“ワームホール”となり、そのイメージなら“ルーペ”より“スコープ”かなぁ、ワームって響きから虫っぽさも欲しいなぁと、頭の中でグルグルする。
単純に綴りが似てるからってだけで“lupe”+“helper”=“HELuPER!”とした経緯に倣って、“scope”に似ている“scorpion”に目を付ける。「ワームってミミズとかの永細い奴ちゃうの?」って指摘は無視(ムシだけに…えっ('ゝ')?)。
そんでもって、ただのサソリじゃ味気ないので、蠍座の“Scorpio”に(1文字節約 (^^♪ )。“scope”+“Scorpio”=“SCOrPio!”のできあがり(えっ、しょぼい? グヌヌ)。
“ピ”の部分を“PE”にするか“Pi”にするか迷ったけど、“Scoping”みたいに“e”は“i”に変わることがよくあるので“Pi”にしておいた(何が正解なのかワヤですわ、グスン)。
もっと分かり易〜く“HELuPER! 忍(しのび)”とかも考えたけど、後継作ではなく姉妹作だよって所を強調したくて止めにした(えっ、ダサい? ギャフン)。
HELuPER! から SCOrPio! へ設計思想を180度ひっくり返しちゃったために、“マーク”と“サイト”の役割も入れ替わっちゃいました。さすがに入れ替えただけでは混乱しそうなんで、“照準”と“水準”に改めてみた。あれまぁ、漢字でスッキリ。
他の作品も含め、今までずぅ〜っと落とし穴にはまっていたことに、気付いてしまった。ソリューションのプラットフォームを“Any CPU”としても、実際には32bit(WOW64)で動作するってことに、Wow! コンパイル オプションに
スイッチがあるなんて、全然知らなんだ。アセンブリ情報に登録するタイトルが長すぎて、タスクマネージャで動作モードが見えてなかったんやな。どうせ、WOW64の介入を許したところで、なぁ〜んも困らんしぃ〜。<SCOrPioの設定内容>-<ビューア>-<呼出>-<応答間隔> |
|
意味 | 呼び出しへの応答間隔を指定します。 |
---|---|
値 | 10〜5000(Integer) |
既定値 | 100 |
<SCOrPioの設定内容>-<ビューア>-<ビュー>-<応答間隔> |
|
意味 | 照準操作への応答間隔を指定します。 |
値 | 10〜1000(Integer) |
既定値 | 50 |
コマンド | 概要 |
---|---|
/NONSTOP | 倍率調整のズーム ストッパを無効にします。 |
/RESET | 既定値で起動します。 |
/TEST | テスト モード。無保存終了や詳細パラメータ表示が有効になります。 |
/ZOOM=n | ズーム イン/アウトの調整倍率を指定します。 2≦n≦10(Integer) |
書式 | 概要 |
---|---|
{3},{4},{5},{6} | 255,18,52,86 |
{3:X2},{4:X2},{5:X2},{6:X2} | FF,12,34,56 |
{1:X8} | FF123456 |
{2:X6} | 123456 |
{6:X2}{5:X2}{4:X2} | 563412 |
rgba(|RED|, |GREEN|, |BLUE|, {7:0.0}) | rgba(18, 52, 86, 1.0) |
^a|RED|{TAB}^a|GREEN|{TAB}^a|BLUE|+{TAB 2} |
|
キーストローク | Ctrl+A → 1 → 8 → Tab → Ctrl+A → 5 → 2 → Tab → Ctrl+A → 8 → 6 → Shift+Tab > Shift+Tab |
---|---|
解説 | R欄→G欄→B欄の順に10進数で送信します。 |
^a{4:X}{{TAB}}^a{5:X}{{TAB}}^a{6:X}+{{TAB 2}} |
|
キーストローク | Ctrl+A → 1 → 2 → Tab → Ctrl+A → 3 → 4 → Tab → Ctrl+A → 5 → 6 → Shift+Tab → Shift+Tab |
解説 | R欄→G欄→B欄の順に16進数で送信します。 |
^a{1:X8} |
|
キーストローク | Ctrl+A → F → F → 1 → 2 → 3 → 4 → 5 → 6 |
解説 | ARGBを16進数8桁で送信します。 |
^a{1:X8}{{ENTER}} |
|
キーストローク | Ctrl+A → F → F → 1 → 2 → 3 → 4 → 5 → 6 → Enter |
解説 | ARGBを16進数8桁で送信し、最後にEnterを押す。 |
^a{2:X6} |
|
キーストローク | Ctrl+A → 1 → 2 → 3 → 4 → 5 → 6 |
解説 | RGBを16進数6桁で送信します。 |
^a{2:X6}{{ENTER}} |
|
キーストローク | Ctrl+A → 1 → 2 → 3 → 4 → 5 → 6 → Enter |
解説 | RGBを16進数6桁で送信し、最後にEnterを押す。 |
%r|RED|{TAB}|GREEN|{TAB}|BLUE| |
|
キーストローク | Alt+R → 1 → 8 → Tab → 5 → 2 → Tab → 8 → 6 |
解説 | Windows標準の《色の編集》ダイアログに特化。 R欄へ直接フォーカスを移せ、フォーカス移動に伴って自動的に全選択されることを期待。 |