OnScroll

最新版 12/30 2023
【概要】
マウスのスクロールボタンは大変に有効な物だとは思いますが 通常は アクティブ ウィンドウしかスクロール しない様になっています。( ソフトによって アクティブでも マウスカーソルが自分上に無いと スクロールしない 物や する物も有ります。)
そんな時に 下のウィンドウを参照していてスクロールして次を見たいと言う用途が 多々有ると思いますが 下の ウィンドウをスクロールする為には此をアクティブにしなければならなくて アクティブにしたら 上下関係とか 入力窓が変わってしまうとかをさせない為に 下に有る物だけをスクロールしたい 等との用途を考えてこの OnScroll を作りました。
アクティブでなくても マウスカーソルが目標上に有ればマウスホイールによってスクロールさせる事が出来ます。 アクティブなウィンドウにマウスカーソルが有る時にはフォーカスの有無により動作が若干変わる事も有りますが 基本的には何もしません。
アクティブなウィンドウ の時にはフォーカスの有るウィンドウがスクロールしますが 此の OnScroll の持つ機能は マウスカーソルの有るウィンドウを対象としますのでかえって変な所のウィンドウがスクロールしなくていいかも しれません。
此の辺りの事は テクニカルインフォーマション にも書きました。( 此は Windows 8 までの話です。)
Windows 10 になってからスクロールは アクティブ インアクティブ に関係なくなりました。その為 存在理由は  Shift + ホイールでの 横スクロール機能だけになってしまいましたが Ver 1.600 から マウスカーソル位置を確認して 搬出する スクロール信号を変える事によって Shift を押さなくても 横スクロールが出来る様になりました。
横 スクロール は マウスの横スクロールボタンの出す信号と 従来から有る 横スクロールバー移動の信号を  同時に 搬出しますから 横スクロールメッセージに対応していないソフトでも横スクロールが出来る可能性は 高くなります。

【特徴】
メーカーのマウスドライバーやユーティリティーと違って マウスの種類 メーカー 等には全く影響を受けません。 動作中に違うマウスに変えてもそのまま動作を同じ様に続けられます。( 2 つのマウスの事は考慮していません。) メーカーのマウスドライバーとかユーティリティーは有っても無くてもかまいません。一番 上での メッセージを 取得して動くのでそれ以降のソフト等は関係有りません。

【動作環境】
Win XP / Vista / 7 / 8 / 10 / 11 です。特別なランタイムはいりません。( Win 98 ME 2000 は 不可 です。)
Win XP では OS の機能から 横スクロール機能は働きません。
Shift + 縦スクロールは別種類のメッセージを出しますから Windows XP では 横スクロール 出来なくても 又 Vista 以降では ソフトが横スクロールに対応していなくても + Shift で 横スクロール出来るかも知れません。

【インストール/アンインストール方法】
適当な所に OnScroll.exe を置いて下さい。そこから ショートカット を作って 適宜コマンドを入れて 立ち上げて下さい。
アンインストールは単に OnScroll.exe と作成したショートカットを削除して下さい。他には何も残しません。
お持ちのマウスをサポートするメーカーのマウスドライバーとかユーティリティーは入っていても無くても かまいません。ウィンドウがアクティブでない時にしか働きませんから殆ど通常のマウス関係とはバッティング する事は有りません。

【使用方法】
通常は スタートアップに登録して動作させっぱなしと言う事になるかと思います。
立ち上げ時の コマンドが 若干指定出来ます。
縦スクロールについては 通常通りで何も変わる所は有りません。横スクロールさせたい時には 横スクロールバー の上にマウスカーソルを置いて 横スクロールホイール( SW )を押して下さい。横スクロールホイールをサポート していない ソフトでも 横スクロールさせる事が出来るかも知れません。( 横スクロールボタンでのサポートは  Vista 以降ですが Vista 以前のソフトでも横スクロールさせる事が出来るかも知れません。)
横スクロールホイール( SW ) が無いマウスでも 横スクロールバー上にマウスカーソルを置いて 縦スクロール ホイールを廻して下さい。横スクロールさせる事が出来るかも知れません。( 多分 縦スクロールもしてしまい ますがご愛敬です。)
あまりしないかも知れませんが 縦スクロールバーに マウスカーソルを置いて 横スクロールホイール( SW )を 押すと 縦スクロールさせる事が 出来るかも知れません。( SW だから押しっぱなしで連続してスクロールします。)
後 横スクロールバー上にマウスカーソルを置いても 横スクロールしないソフトも有るかも知れません。その様な 時には Shift キーを同時に押して見て下さい。(ソフトの中には子ウィンドウが無かったり 検出出来ない物が 存在します。その為の切り替えの Shift キーです。)
立ち上げ時の コマンドが 若干指定出来ます。
通常はタスクトレイにアイコンが出ます 此を右クリックする事でメニューが出ます。

二重起動は認めませんが 二重に起動しようとすると先に起動している OnScroll にメニューを出させます。
スクロールホイールを廻す時に Control キー 又は Shift キー を押していると システムの出すスクロール信号 ではなく Control は上下 Shift は 水平 スクロール信号を出しますから 通常では スクロールホイールで スクロール出来ない物もスクロール出来るかも知れません。

【コマンドライン】
コマンドラインで 最初の動作を指定出来ます。
/T タスクトレイにアイコンを表示しないで立ち上げます。
 常駐している OnScroll.exe がある時には此にメニューを出させます。
/S On スクロール機能を OFF にして立ち上がります。( 機能停止 )
/A Ac スクロール機能を ON にして立ち上がります。
/U ULC メニュー 機能を ON にして立ち上がります。
/N ULC メニュー で Netを開く機能を ON にして立ち上がります。
/R Menu Rボタン を 有効にして立ち上げます。
/X 常駐している OnScroll.exe を終了させます。

【立ち上げ時のキー】
コマンドラインの /N /X と排他的な動作になります。
Control : タスクトレイにアイコンを表示しなくなります。( /N がある時は 表示します。)
  常駐している OnScroll.exe がある時には此に右クリックメニューを出させます。
Shift + Control 常駐している OnScroll.exe を終了させます。( /R がある時には 通常動作です。)

【制限事項】
【注意事項】
【使用に関して】
此の プログラムは バグ 動作不良などが無い事を期待されて作られてはいますが 違う環境での 正常動作 又 誤動作から来る損害等 についての 保証はいたしかねます。 ただし ご意見 提案 動作不具合報告等は歓迎いたします。

【履歴】
2013/10/20 Ver 1.000
先にプログラムした BwFwButn で使用したマウスメッセージを直に先取りする機能がスクロールホイール信号にも 有効で マウスメッセージをフックしなくても インアクティブウィンドウのスクロールに利用出来る事が解り 結構有用だと思われるのでインアクティブウィンドウのスクロール機能 だけに特化した新規プログラム OnScroll を作成しました。
2013/11/15 Ver 1.100
アクティブウィンドウでもフォーカスの無いウィンドウの上にマウスカーソルが有れば此に スクロールメッセージを送る Ac スクロールの機能を新設しました。又 通常のスクロールをサポートしないコントロール用に Control + ホイール を付加しました。
2013/12/05 Ver 1.120
子ウィンドウがグループボックスで囲まれていると目的のウィンドウを特定出来ない事が有るのを修正しました。 受けとったメッセージの後始末をシステムが必ず出来る様なコード廻しにして安全性を高めました。
2014/03/12 Ver 1.130
内部的な設定の記憶を配列型式から数値のビット列の形にして効率を上げました。 コマンドライン / N が無くても 先に 起動している OnScroll がある時には 此に メニューを 出させる様にして 余分な二重起動の警告はやめました。後 若干ですがメッセージ処理コードを効率の 良い物にしています。
2014/11/10 Ver 1.140
スクロールホイール動作時に同じウィンドウを連続してスクロールさせる時には ウィンドウの確認は最初だけにして その後の確認はしない様にして効率を上げ ウィンドウの確認をより正確に出来る様にしました。
マウスメッセージで一番頻繁な Move は即パスする様なコードにして余分な確認演算をしない様にし ウィンドウのシャットダウンと共に終了する時に出来るだけ早い反応で終了するコードに変えました。
2015/03/15 Ver 1.200
フォルダーウィンドウ ( エクスプローラー ) の左上アイコン辺りの右クリックで 此のフォルダーに対する コンテキストメニューを出す ULC メニュー 機能を付加しました。
スクロールに関しては ウィンドウの確認は最初だけにするのをもう一つ進めて此の時点で判断を1つ する事で連続しての判断を無しにして子ウィンドウの取り違えをより少なくしました。
2015/05/10 Ver 1.210
左上のアイコンを右クリックする時に Shift キーを押していると 一時停止 設定と逆動作をさせる様にしました。 コンテキストメニューの認識に ドキュメント ごみ箱 コントロールパネル を加えました。後 内部的なリソースを 整理して無駄を無くしました。
2015/07/28 Ver 1.220
DPI の仮想化による スケーリングの影響でメニューの文字が滲んで表示されてしまう事が無いように 内部的には スケーリングに対応している事を 宣言する事で OS のスケーリングの影響を 受けない様にしました。
2016/02/24 Ver 1.240
OnScroll.exe の立ち上げられ方によっては 後からの OnScroll のメッセージを受け付けなくなってしまう事を 無くしました。
ULC でコンテキストメニューを出した時のフォルダーウィンドウをアクティブ色で表示して違和感を無くし フォルダーの識別もし易い様にしました。
2016/04/15 Ver 1.270
ULC メニューは新たに デスクトップ ピクチャ ミュージック ビデオ フォルダー にも対応し 安定して より確実に 表示出来る様にしました。
ULC メニュー の下に └Net を開く のオプションを入れて ネットワークドライブの時にはオリジナルの ネットワーク上のフォルダーを開けられる様にしました。
2016/11/15 Ver 1.280
Net を開く の機能を ネットワークドライブでない時には メニューを 1つ上 を開く に変えて 此を選択する事で 一段上のフォルダーを別ウィンドウで開く様にしました。
2017/03/30 Ver 1.300
フォルダーメニューを 立ち上げる所のコードを全てユニコードで扱う事にして 文字違いから来る 不具合が 出ない様にし 又 コード変換の無駄を無くし 効率を上げました。別ウィンドウで開いた後のタイトルバーの アクティブ色が残るの不具合を修正しました。
1つ上を開く は 上を開く にして Net を開くのチェックとは関係無しに常に出る様にしました。
2017/05/10 Ver 1.310
\\コンピューター名\共有名 の表示の時に 上を開く でもう一段上を開いてしまい そのコンピュター下の 共有フォルダーアイテムを開かない不具合を無くしました。
スタートアップ時にタイミングが早すぎてタスクトレイアイコンが確保出来ない事が有るのを修正しました。
2017/10/15 Ver 1.320
内部で廻すメッセージの一部ををより余裕の有る物に変えました。
エクスプローラーのエラーでタスクトレイのアイコンが失われた時に内部の保持デートと整合性がとれなくなり  タスクトレイのアイコンを表示出来なくなる事を修正しました。
2017/11/25 Ver 1.340
ULC メニューを出す時の 左上アイコン辺りの右クリックをする時に Net を開く と 上を開く を Control キー で切り替えられる様にしました。
2018/01/15 Ver 1.360
ULC メニュー の最初の を開く は必ず新しいウィンドウで開く様にし 上を開くの時は 開いたウィンドウでは  ULC メニューを出したウィンドウを選択した状態で開く様にしました。又 この時に 送る文字列もワードアラインを 取って渡す様にしました。
2018/03/30 Ver 1.380
常駐している時に システムの不具合などで デスクトップ周りのベースウィンドウのハンドルが変わってしまった 時に 此を取り直す機能を付加しました。後 全く使用する目的も無く取得していたシステム周りのハンドルを 取得するのをやめて無駄を無くしました。
2018/05/30 Ver 1.400
ULC メニュー を出す範囲は出す相手にきちんと右上のアイコン位置かどうか確認する 事にして位置を正確にし  又 余分な 位置決めの API コールを無くして コードの効率化 サイズも減少しました。
2018/07/25 Ver 1.420
スペシャルフォルダーを求めるAPI コールの戻り値 判断を修正して正しくしました。
カーソル位置を取得する API を実情に沿った物に換えて効率を良くしました。 後 ウィンドウメッセージ取得後に 余分な分岐をしなくてもいいコードに変えました。
2018/10/15 Ver 1.440
ULC メニュー を出した後のターゲットフォルダーのタイトルバー色の扱いを確実に メッセージが回ってから 処理する様にしておかしな表示になる可能性を減らしました。
立ち上げ時のタスクトレイアイコンの待ち時間もメッセージループの中で処理する様にして 砂時計アイコンを 出ない様にし その間の反応も良くしました。
2019/04/15 Ver 1.460
ULC メニュー は フォルダー表示がドライブの時には Net を開く が有効でなくても ネットワークドライブかを 必ず確認する事にしてネットワークドライブの時には Net を開くのメニューを 出す事にしました。
システムのメニューが先に出てしまった時でも確実に此を消してから ULC メニューを出す様にしました。
2019/10/25 Ver 1.480
ULC メニュー が より Original メニューと重ならないで 安定して出る様にしました。
ターゲットフォルダー表示のアクティブ色 インアクティブ色がタイミングが間に合わなくて取り違えるのを 無くしました。
ULC メニュー が出ている時のメッセージ廻しをより安全で抜けの無いコードにしました。
2020/06/25 Ver 1.500
マルチモニター環境に対応しました。
メニューを出した後は自分は速やかに Background に待避する様にして出来るだけメニューを出す前の 状態に早く戻し 他に与える影響を出来るだけ少なくしました。
2020/10/20 Ver 1.600
On スクロール 機能を見直して カーソル位置が何処に有るかを検出して から条件でスクロール方法を変える様に して 柔軟性を拡大しました。此の為 付加メニューも └アクティブ から └Ac.シグナル に変えました。
スクロールホイール + Shift キーは 横スクロールホイールバー上にマウスカーソルが有る時には Shift キーを 押さなくても機能するようにしました。但し 横スクロールホイールバー上にマウスカーソルが有る事を 検出出来ない ソフトのために + シフトキーは残しています。
横 スクロールホイール + Control キーは殆どする事もなく 他の機能と被る事が多いので廃止しました。
自身は 文字入力も無く IME 使用無しの宣言をして常駐メモリー量を大幅に減少させました。
2021/07/15 Ver 1.640
ULC メニューを出す時に 元のシステムメニューを押さえるコードを入れてメニューが二重に出る可能性を より減らしました。
メニューのバージョンを マウスの右クリックで選択した時に同じフォルダーに OnScroll.txt が有れば 此を開く様にしました。
2021/09/30 Ver 1.700
マウスボタンのチャッタリングの防止コードを入れて 余分なメッセージを廻す 可能性を排除しました。
マウスの右ボタンが押された時に 直下の確認をして ボタンが離された時に 出来るだけ速く ULC メニュー を 出す様にしました。ULC メニュー のアクセラレーションキーが効いていない状態を修正しました。
2021/11/15 Ver 1.800
ULC メニュー のアクセラレーションキーが効いていない状態を修正し 押されている キーが出来るだけ他に 影響を与えない様にしました。又 マウスボタンの左右どちらの ボタンでも OK にしました。
メニューが 右ボタンでも 選択出来るようにする Menu Rボタン を付加しました。Rボタン を有効にして 立ち上がる コマンドライン /R を新設しました。
2022/01/20 Ver 1.820
ULC メニュー の 上を開く の処理をした後その下のフォルダー表示ウィンドウの タイトルバーの色が不整合に なってしまうのを修正しました。
設定の Menu Rボタン が有効な時には フォームのメニューも右ボタンで開く様にしました。
メッセージダイアログが適当な所に アイコン付きで 開く様にしました。
2022/04/25 Ver 1.860
ULC メニューからの他のプログラム立ち上げの状態を出来るだけエクスプローラーからの状態に近くして挙動の 不自然さを少なくしました。又 メニューを立ち上げる時に 内部の待期関数に係らない様にして若干ですが ( 少なくても 30ms以上 )速くメニューが出る様になりました。
ダイアログは順当と思える位置に必要に応じて アイコンを付けて表示する事にしました。
Menu Rボタン は 他のプログラムの R ボタンとの関わりを少なくするために 長く押されて離された ( 約 0.5 秒 ) 以上の時には動作をしない様にしました。
内部的に動作をやり取りするメッセージポストが機能をしたり表示を変えたりする ウィンドウズメッセージに 係らない様に順序正しく廻る様にして安定性を上げました。
2022/09/20 Ver 1.880
タイミングによってはおかしな所の右ボタンアップで ULCメニューが ON に なってしまう可能性を無くしました。
ULC メニュー を出せる可能性の有る時には 右ボタンダウンで Fol.Menu の チップを出す様にしました。
2022/11/10 Ver 1.900
Windows 11 の 22H2 から始まったタブ付きのファイルエクスプローラーでは NCAHITTEST の返す値が 約束と 違うので此を使用する ULC メニュー 動作が所定の所で出る様にしました。
2023/08/05 Ver 1.920
コマンドラインを取得する所を統一して若干効率を良くし 値の再確認も入れて 安全性を高めました。
同梱ファイル ( OnScroll.txt ) の サポート情報を最新の物に変えました。
2023/10/15 Ver 1.940
Windows 11 の ファイルエクスプローラーの構造が大きく変わって 此のウインドウでは ULC メニューが 出なくなったのに対応しました。
子ウィンドウから親ウィンドウを探す API を効率の良い物にしました。
2023/12/30 Ver 1.960
Windows 11 で ULC メニュー を出す左上アイコン周りの位置を調整しました。
最初に ULC メニュー が出るか確認する所と 実際に出すコードをはっきりさせました。

 最新版 12/30 2023 Ver 1.960 Size 13 kb OnScroll のダウンロード
−戻る−