BwFwButn

最新版 04/20 2024
【概要】
新しく 出てくるマウスを見ていると マイクロソフトがマウスを激しく出していた頃にしていた様に サイドに 2 ボタンを加えて 此に ブラウザの 戻る 進む の機能を標準で 振り分けている物が他のメーカーでも増えてきて います。
ブラウザ 操作をする時には此は此で便利なのですが ブラウザ が無くなったとたんに無用の長物になって しまいます。それを避ける為に メーカーによって独自のマウスドライバーと言うかユーティリティーを提供して いる所も有ったりするのですが 此の ユーティリティーの中でアサイン出来る機能が Ms の インテリポイントの 様に 他のプログラムをユーザーが自由に指定して立ち上げられる物が少ない ( お仕着せの Notepad とか Mspaint とか OutLook とか の指定ではなく ユーザーがプログラムを直にファイル名で指定出来る事を言っています。) と言う事で BwFwHook を作成しましたが ( いきさつ ) マウスの戻る進むボタンの取得がメッセージの下流の方でしていたので此を 上流の方でする事にして 制限を少なくした BwFwButn を新たに作成しました。
Ver 2.000 から タスクトレイアイコンでのランチャー機能も強力にし ミドルボタンでの操作も付加したので 戻る 進む ボタンが無くても十分使用出来るのではないかと思います。

【特徴】
戻る 進む ボタンに コマンドで割り付けた 指定のプログラムを起動する事が出来ます。
メーカーのマウスドライバーやユーティリティーと違って マウスの種類 メーカー 等には全く影響を受けま せん。動作中に違うマウスに変えてもそのまま動作を同じ様に続けられます。
メーカーのマウスドライバーとかユーティリティーは有っても無くてもかまいません。( 有ると 却って邪魔かも しれません。) 必要なのは 戻る 進む ボタンが有る事だけです。 もちろん 戻る 進む 1つだけのボタンのマウスでもかまいません。
36個までの複数セットのコマンドを与える事が出来るので切り替えて使用する事も出来ますし 直に指定した セットの メニューを表示して選択する事も出来るので 戻る 進む にランチャー機能を持たす事も出来ます。
戻る 進む ボタンでの ランチャー機能ですから その時の アクティブウインドウ マウスカーソル位置 を 記憶出来ますから スタートメニューやタスクトレイとは 又 違う立ち上げ方法も利用出来ます。
同じ マウス Input 取得メッセージで動かせるので
Ver 1.100 から インアクティブウィンドウでもマウス カーソルをその上に置く事で マウスホイールでの スクロールもサポートしました。
Ver 2.100 からは フォルダー表示の左上アイコンで ULC メニュー を出す様にしました。
Ver 2.500 からは 内部コマンドに /A タスクメニューを加えてかなり多機能になって居ます。

【動作環境】
Win XP / Vista / 7 / 8 / 10 です。特別なランタイムはいりません。( Win 98 ME 2000 は 不可です。 )

【インストール/アンインストール方法】
適当な所に BwFwButn.exe を置いて下さい。そこから ショートカット を作って 立ち上げて下さい。 同じフォルダーにコマンド指定用のコマンドセットを書いた BwFwButn.bwf ファイルを用意して下さい。 サンプルは同梱していますが BwFwButn.bwf 又は コマンドセットテキストが無いと何の意味もありません。
アンインストールは単に BwFwButn.exe 作成したショートカットと BwFwButn.bwf を削除して下さい。 他には何も残しません。
メーカーのマウスドライバーとかユーティリティーは入っていても無くてかまいません。これらのサポートする 横スクロール機能等が必要な時は入れておいても良いかと思います。又 戻る 進む ボタンに 機能を振り付けて いても それと同時に作動します。

【使用方法】
通常は スタートアップに登録して動作させっぱなしと言う事になるかと思います。
立ち上げ時に コマンドセットファイル指定が出来ます。無ければ同じフォルダーに置いたファイル BwFwButn.bwf を 参照します。書式は 同梱している BwFwButn.bwf BwFwButn.rxr の コマンドセット の所を参照して下さい。
最初のコマンドセットが始めに選択されて 戻る 進む ボタンに割り付けられて 戻る 進む ボタン を押す事で 指定されたコマンドが実行される様になります。
戻る 進む ボタンを押す時に Control キーを押していると マウスカーソルが ディスクトップ上では メニューの 立ち上げ 有効のを反転 させた動作を 他のウィンドウ上では フィルターの反転動作をします。
( コマンドが実行される状態の時は実行されずに 逆にコマンドが実行されない状態の時は実行します。)
フィルター のブラウザ等を指定しているしていない時の反転の為などにに利用して下さい。
通常はタスクトレイにアイコンが出ます 此を右クリックする事でメニューが出ます。

戻る 進む を押せば指定した コマンド を実行します。
タスクトレイのアイコンを左クリックするか 戻る 進む を若干長く押していると ( 約 360ms 以上 ) メニューの コマンド 以下に出る メニューが 出現します。( オプションで ダブルクリック も認める様になります。) この場合には此を選択する事で 選択されたコマンドを 直に実行します。この メニューが出た時にはメニューが 選択された後の動作でアクティブになるウィンドウが有る時にはこのウィンドウのタイトルバーをアクティブ色に して識別表示します。
マウスボタンで選択の場合は左クリックで左側のコマンドを右クリックで右側のコマンドを実行します。 Ent とか 0〜9 A〜Z キー等の場合は 左側 最下行にチェックが有る時には 左側の コマンドを無い時には 右側の コマンドを実行します。Ent とか 0〜9 A〜Z キーを押す時に Shift キーを押していると 此の左右の コマンドを逆にして実行出来ます。
此のコマンドメニューが出ている時には 戻る 進む ボタンを押せば 戻る 進む ボタンに選択コマンドが割り振られます。
ミドルボタンを使用する時には ミドルボタンで選択する事でミドルボタンに選択コマンドが割り振られます。
マウスの左ボタンの時にはマウスカーソルのある方の( 左と 右の ) コマンドを実行します。
タスクトレイのアイコンを右クリックするか 戻る 進む を 若干長く押している ( 約 360ms 以上 )時に Shift を 押していると設定メニューが出ます。( オプションで ダブルクリック も認める様になります。)
プログラム立ち上げ機能が ON になっている時には タスクバー上で 戻る ボタンを押せば タスクトレイ左クリック で出る コマンドメニュー 進む ボタンを押せばで 右クリックで出現する設定メニューが出ます。 ( Shift を押していると 戻る 進むが 反転します。) タスクトレイアイコンを表示していない時 ( /N コマンドオプション ) 等に利用して下さい。
プログラム立ち上げ機能が OFF になっている時には タスクバー上で 戻る 又は 進む ボタン を Shift キーと共に 押せば 右クリックで出現する設定メニューが出ます。タスクトレイアイコンを表示していくて プログラム立ち上げ 機能が OFF になっている時に使用して下さい。
二重起動は認めませんが /N コマンド 指定時 又は Control を押しながら立ち上げる事で先に 常駐している BwFwButn に設定メニューを出さす事が出来ます。
スクロールホイールを廻す時に Control キー 又は Shift キー を押していると システムの出すスクロール信号 ではなく Control は上下 Shift は 水平 スクロール信号を出しますから 通常では スクロールホイールで スクロール出来ない物もスクロール出来るかも知れません。

【コマンドライン】
コマンドライン は コマンドセットファイルを指定する事が出来ます。
此の コマンドセットファイル の先頭行に 各種の設定を残しています。
コマンドラインに 戻る 進む ボタンに 割り当てる テキストファイルを記述しない時は 同じ フォルダーにある BwFwButn.bwf を読み込んで ( 無ければ作成して ) 立ち上がります。
何も 指定しないで BwFwButn.bwf も無い時の時の設定は タスクトレイにアイコンを表示 / On スクロール 機能を ON / アクティブスクロール機能を ON ULC メニュー機能を ON です。 戻る 進む ボタンに割り付ける コマンドセットは 一番最初の 0. です。
/M で先に常駐している BwFwButn にメニューを出させます。常駐している物が無い時には通常通りに常駐します。

【立ち上げ時のキー】
Control : 常駐している物が有るときには 此に設定メニューを出させます。コマンドライン /M と同じです。
常駐している物が無い時には 通常通り立ち上がります。

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

【履歴】
2013/09/30 Ver 1.000
同じ目的で先にプログラムした BwFwHook がどちらかというと メッセージを下流の 方で取得して サイドボタンメッセージを取得出来ない事が有るので Win XP からサポートされだした 逆に 一番上流 の方でのマウスインプットシグナルを利用する方法でプログラムしてみました。
作った物を自分が持っている全ての環境で使用してみると BwFwHook と同様に安定して動作をするし 扱いも 反応も だいぶ良くなっているので BwFwHook の代替プログラムとして公開しました。
2013/10/25 Ver 1.100
On スクロールのメニューと機能を加えて アクティブでないウィンドウ上でもマウスカーソルがその上に有れば スクロールホイールで垂直方向にスクロール出来る機能を加えました。
設定メニューはタスクバー上 + Shift で常に出す様に変えました。全体的にフックプロシージャーから引きずっていた コードや関数の制限を修正しています。
サイドボタンダブルクリックの失敗時のメッセージ確認消化時間が長すぎて次のクリックが早いと反応しなくなるのを 修正しました。内部変数が重なる可能性の有る所を変え 後に送る情報のビットを整理して余分な付加や削除を無くしました。
2013/11/20 Ver 1.200
アクティブウィンドウでもフォーカスの無いウィンドウの上にマウスカーソルが有れば 此に スクロールメッセージを送る アクティブ スクロール の機能を新設しました。又 通常のスクロールをサポートしないコントロール用に Control + ホイール を付加しました。 後 タスクトレイアイコン上でのメッセージの交錯から来るメニューの二重表示の不具合を修正しています。
2013/12/10 Ver 1.300
サイドボタンのダブルクリックはそれ程 し易い物ではないので 基本的には ボタンを長く押す事に変えて 操作を単純化し 此により プログラムの 立ち上げ コマンドメニューの出現 共に 反応が良くなりました。 この為 ダブルクリック操作はオプション扱いにしました。
子ウィンドウがグループボックスで囲まれていると目的のウィンドウを特定出来ない事が有るのを修正しました。
受けとったメッセージの後始末をシステムが必ず出来る様なコードを廻しにして安全性を高めました。 後 集中的にメッセージを処理消去する所のコードが 自分が終了出来なくなる可能性が有るので 此の部分を無くして 別方法で処理する事にしました。
2014/02/15 Ver 1.320
戻る 進む ボタン Shift キー を最終的に認識する所を一元化して 此に関するコードの無駄を無くしました。
コマンドを出さないのを 無変換キー から コマンドを出す出さないを Control キーで排他的トグル動作にして Control キー押しの用途を増やしました。
2014/03/17 Ver 1.330
あまり用途と意味の無かった Top Most のウィンドウ のフィルターの 代わりに 最大化している物については 常に実行するフィルター 最大化 のオプションに換えました。
直前のフォアグラウンドウィンドウをアクティブにするのが設定によっては確実でない時が有ったので 此を修正しました。
フィルター等に使用する相手を見極める API の使用を整理して余分な コールが出ない様に改善しました。
内部的な設定の記憶を配列型式から数値のビット列の形にして効率を上げました。
二重に起動しようとした時の扱いを常に常駐している BwFwButn に設定メニューを出させる様にして余分な 二重起動の警告はやめました。
後 若干ですがメッセージ処理コードを効率の良い物にしています。
2014/06/20 Ver 1.340
左右中央ボタンが離されてからフォアグラウンドウィンドウを確認する時に メッセージの有無を見て 無ければゆっくりと行い 立ち上がりの遅い物でも出来るだけ取り違いが無い様に 且つ この間に必要が有った時には すぐに反応が出来る様にしました。
コマンドセットの 0〜9 番目を指定選択して立ち上げる コマンドライン /0〜/9 をサポートしました。
/B スイッチの ブラウザー 認識に サファリも入れました。
2014/08/05 Ver 1.344
/B スイッチの ブラウザー 認識に Lunascape Sleipnir を入れました。
Control キーを押しながらの動作をディスクトップ上では 立ち上げメニューの有効の反転 その他の ウィンドウ上ではフィルターの反転に変えました。
2014/09/10 Ver 1.350
マウスの左ボタンと戻るボタンの時にはコマンドメニュー上でのマウスカーソルの左右での位置で 左と右のメニューアイテムを指定出来る様にしました。
2014/10/10 Ver 1.360
左右での位置で 左と右のメニューアイテムを指定が他のメニューでも働いていた無駄を無くしました。 コマンドセットの BwFwBuCm.txt はコマンド1つでも認める様にしました。バージョン のメニューを 右クリックで選択するとこの説明文が有れば表示する様にました。 コマンドメニューを出した時にどのウィンドウが対照かを示す為に対照ウィンドウのタイトルバーを アクティブ化して示す様にしました。
2014/10/30 Ver 1.362
余分なマウスのボタンやスクロールホイールの動きによってその時のアクティブなウィンドウをを見失う 可能性をより排除して この部分のコード効率を改善し 反応を良くする為に確認ループを倍の速さにしました。
2014/11/20 Ver 1.370
アクティブなウィンドウを認識するタイミングをシンプルなタイマー割り込みとマウスボタンが離された時点に 変えて 見逃す可能性を排除しました。此の事によってイベントメッセージは不要な待ち無しで直ぐに処理出来る 事になり反応が良くなりました。同時に コードも簡潔になりサイズもダウンしました。
又 アクティブなウィンドウの認識が正確になったのでスクロールホイール動作時にその都度のアクティブな ウィンドウの認識が不要になり此の部分のコードが余分な物が省けてシンプルになりました。 スクロールホイール動作時に同じウィンドウを連続してスクロールさせる時にはウィンドウの詳細な確認は 最初だけにして同じ時にはその後の確認はしない様にして効率を上げました。
ウィンドウのシャットダウンと共に終了する時に出来るだけ早い反応で終了するコードに変えました。
2014/11/28 Ver 1.371
Bw Fw ボタンでフィルターで指定したウィンドウやマウスカーソルの位置によってプログラムが立ち上げられなかったり メニューが出なかったりした時にタイマー割り込みとの条件がクリアー出来ないでアクティブなウィンドウを 見過ごして不自然な挙動が出てしまう不具合を修正しました。
2015/02/05 Ver 2.000
立ち上げ時のコマンドラインでのコマンドセット指定は制限が多く解りにくいので 全て コマンドテキストに 任せる様にしました。この為に コマンドセット指定の柔軟性が上がったので マルチライン指定が出来る様に なり 若干の条件分岐と 内部コマンドが発行出来る様にしました。全体的には ランチャーとしての機能の強化です。
進む 戻る ボタンが無い環境でも使用できるようにミドルボタンに割り振る事も出来る様にしました。
2015/03/31 Ver 2.100
Windows Vista 7 8 ( 10 ) 用に ULC メニュー オプションを付けました。
行頭の :での指定コマンドは 数種類に決まっているので :の次の文字は小文字のアルファベットしか 認めない様にして他のコマンド指定への柔軟性を上げました。その他数カ所の細かいコマンド対応を 改善しています。
2015/05/20 Ver 2.110
コマンドの最後の空白を削るループをより安全な物に変え クリップボード実行のテキストに クリップボード実行の /CB が入っている場所によっては見逃してしまう事が出るのを修正しました。
Bw Fw ボタンの機能を止めるフィルター ブラウザーが有効でも 設定 バージョン等のダイアログはこのフィルターは 効かない様にしました。
後 /X /S の特例を入れ /S の説明が無かったのを記述しました。
2015/08/31 Ver 2.120
DPI の仮想化による スケーリングの影響でメニューの文字が滲んで表示されてしまう事が有るので 此をを防ぐ為 内部的には スケーリングに対応している事を 宣言する事で OS のスケーリングの影響を受けない様にしました。
戻る 進む ボタンを押す時の Control キー動作を 排他的トグル動作から 押していれば 他の条件をオーバーライドして 動作する様に変えました。後 /X /S の特例を入れ /S の説明が無かったのを記述しました。
2015/11/05 Ver 2.130
BwFwButn.exe の立ち上げられ方によっては 他からのメッセージを受け付けなくなってしまう事を無くしました。
2016/01/10 Ver 2.200
Windows が終了する時に実行するアイテム WinQuit を付加し 新しい 内部コマンド /B01 WaveFile で サウンドを鳴らす様にしました。
最後の = で改行位置によっては メニューに入らない事のある不具合を修正しました。
2016/02/19 Ver 2.300
コマンドメニューを出した時の扱いの指定方法をメニューの出かたによって区別せず統一して解りやすくしました。
複数行のコマンドを実行した時の各実行後の待ちを確実にしました。又 コマンドを実行する時に実行の方法に よって必要なパラメーターを変えて無駄なリソースのリクエストが出ない様にしました。
ULC メニュー を出した時の基準フォルダーをアクティブ色にして認識しやすく違和感の無い様にしました。
メニューから実行する時 直に Fw Bw ボタンから実行する時 又その事後処理等 場合によって出来るだけ統一 したコードを通る様に整理して無駄を無くしました。戻る 進む 中央ボタンに コマンドを割り付けた時には 確認の為にビープのインフォ音をさせる様にしました。
Windows 10 では要らない On スクロール機能 のコマンドライン /O の扱いを 他のコマンドラインと同様に ON にして立ち上げるに変えました。
2016/04/10 Ver 2.340
自分自身で COM を使用する時 COM を使用する物を立ち上げる時の システムとの親和性を上げました。
メニューから コマンドを割り付ける時に進むボタンで選択すると ボタン反転の設定を 反転する様にしました。 又 間違えない様に コマンドを割り付ける時には Control キーを同時に押していないと反応しない様にしました。
ULC メニューは新たに デスクトップ ピクチャ ミュージック ビデオ フォルダーにも対応しました。
設定の フィルター タイトルバー と ブラウザー の使い勝手の為に 独立性を高め違う物として扱う事にして 戻る 進む ボタンを押す時の Control キーの動作を 排他的トグル動作にしました。
2016/07/10 Ver 2.400
ネットワーク上のファイルの扱いもより親和性の高い物に変えました。
/X /S の全てを対照の時でもアクティブウィンドウは残す特例はクラス名を指定する時だけに絞り クラス名を 指定しない時の動作を実用的に変えました。
内部コマンド /T は Z 順位 と アクティブ機能を 分けました。 メニューの選択は Bw Fw Middle ボタンでも 認める事にし コマンドの *Bit 3 4 の区別が付かなくなっていたのを 修正しました。此と同時に Bw Middle ボタンでのコマンドメニューの左位置右位置の使い分けを出来る様にしました。
Middle ボタン はタイトルバーの有る物は無効から タイトルバーが有ってもタイトルバーからメニューの有る 所ぐらいまでは認める事にしました。
ULC メニューに Net を開く のサブメニューを付加しました。
2016/10/25 Ver 2.420
連続して開ける時 立ち上げる時のフォアグランドの区別がはっきり付く様にし 又 余分な待機はしない様にしました。
Net を開く の機能を ネットワークドライブでない時には一段上のフォルダーを別ウィンドウで開く様にし 又 記述コマンドでない物を開く時 に余分な経路で開くのをやめて 直に開く様にして多少効率を良くしました。
2016/11/30 Ver 2.450
BwFwButn.bwf に書くコマンド様式も クリップボード実行 の ファイル名を指定して実行 の型式とを 共通のパラメーター解析コードを使用する事にして様式によって違う結果が出ない様に整合性を取り コードの使用効率を上げました。
この結果 BwFwButn.bwf に書くコマンド様式も コマンド + パラメーター 2項目だけなら Space 区切りも認める 様になり 通常の書式で良くなり 利便性が上がりました。 ( もちろん 此まで通り Tab 区切りの方が正確でパラメーターも多く指定出来ます。)
又 /CB のクリップボード実行の メモリーの独立性を高めサイズの制限も無くしました。
2017/03/05 Ver 2.500
内部コマンドに /A タスクメニューを新設しました。内部コマンド /T に最下位ウィンドウ指定の /T3 フォアグラウンドウィンドウにする /T7 を増やしました。
2017/04/10 Ver 2.520
フォルダーメニューを 立ち上げる所のコードを全てユニコードで扱う事にして 文字違いから来る 不具合が 出ない様にし 又 コード変換の無駄を無くし 効率を上げました。
1つ上を開く は 上を開く にして Net を開くのチェックとは関係無しに常に出る様にしました。
別ウィンドウで開いた後のタイトルバーのアクティブ色が残る事が有る不具合と スタートアップ時にタイミングが 早すぎてタスクトレイアイコンが確保出来ない事が有るのを修正しました。
2017/05/20 Ver 2.530
\\コンピューター名\共有名 の表示の時に 上を開く でもう一段上を開いてしまい そのコンピュター下の 共有フォルダーアイテムを開かない不具合を無くしました。
2017/06/25 Ver 2.540
タスクメニュー表示時のキーアクセラレーションの内部メッセージ処理するコードが入っていなかったので 此を整理して Space キーの扱いもはっきりさせて 付加しました。
フォアグラウンドウィンドウにするタイミングが 早すぎてミスする事が有るので余裕を持たせました。
2017/10/10 Ver 2.560
内部で廻すメッセージの一部ををより余裕の有る物に変えました。
システムの不具合などで ウィンドウハンドルが変わってしまった時に自動的に追従出来る様にしました。
内部コマンド /W の安全性を高め 意味の無かった機能のポストも修正しました。
エクスプローラーのエラーでタスクトレイのアイコンが失われた時に内部の保持デートと整合性がとれなくなり  タスクトレイのアイコンを表示出来なくなる事を修正しました。
2017/11/20 Ver 2.600
ULC メニューを出す時の 左上アイコン辺りの右クリックをする時に Net を開く と 上を開く を Control キー で切り替えられる様にしました。
自分が立ち上がる時に実行するコマンド タイトル AtStart を加えました。
2018/01/10 Ver 2.620
ULC メニュー の最初の を開く は必ず新しいウィンドウで開く様にし 上を開くの時は 開いたウィンドウでは  ULC メニューを出したウィンドウを選択した状態で開く様にしました。又 この時に 送る文字列もワードアラインを 取って渡す様にしました。
2018/02/25 Ver 2.640
立ち上がった時の 遅延状態の時のマウスインプットの反応に対する安全性を高めました。
又 常駐している間に システムの不具合などで デスクトップ周りのベースウィンドウのハンドルが変わって しまった時の 自動追従性を良くしました。
2018/05/05 Ver 2.700
内部コマンド /k に 1:VK_LBUTTON 2:VK_RBUTTON 4:VK_MBUTTON も キーとは区別して 処理を行い有効な動作にして  マウスの疑似 Lボタン Rボタン M ボタン クリック を送出出来る様にしました。/K は 1文字だけでなく ASCII記号列 (文字列) が切れるまで出力する様にしました。
/CP マウスカーソルを 指定位置 若しくは メニューが出る直前の位置に移動する を新設し メニューを出して からでもコマンドリストの実行を出来る範囲を広げました。
コマンドセットの 戻る 進む ミドル ボタン 振り当ては それ程頻度のある物ではないので ボタン + Control キー から ボタン + Control + Shift キーに変えました。
2018/06/05 Ver 2.720
ULC メニュー を出す範囲は出す相手にきちんと右上のアイコン位置かどうか確認する事にして位置を正確にし  又 余分な API コールもやめて若干のサイズダウンと 効率化をしました。
2018/08/10 Ver 2.740
コマンドが1つで ファイル名の時に Control を押していると そのファイルを選択してエクスプローラーを開ける 様にしました。
スペシャルフォルダーを求めるAPI コールの戻り値 判断を修正して正しくしました。
カーソル位置を求める API をその場での最適な物を使用する様にして効率とサイズを良くしました。
Middle ボタンの プッシュ判定を取得する位置をより適切な場所に移しています。
2018/09/25 Ver 2.760
/W Wait コマンドの解釈を柔軟にして /W300 でも認める様にしました。
内部コマンドのうちで 相手の有る物は メニューからコマンドを選択された時に 切り替えのタイミングが 一部のウィンドウには早すぎる事が有る様なので 安定して切り替わるディレイタイムを取る事にしました。
2018/10/05 Ver 2.800
現在のデスクトップのアクティブウィンドウを メニュー 又は コマンド を出す前に 確実に 取得出来る方法が 解ったので 定期的に取得してあまり意味の無かった余分な タイマー動作をやめて システムへの余分な負荷を 少なくしました。此によって ウィンドウを相手にする コマンドがウィンドウを取り違える事も無くなりました。 又 タスクトレイアイコンからの左クリックメニューの時も出来るだけ 最後の アクティブウィンドウ取得が 出来るコードも入れました。
メニューを出す前 出した後 の他の プログラムのタイトルバーのアクティブ色インアクティブ色が正確に 切り替わる様にしました。
システムが 間違って 可視状態にしてしまう "WorkerW" クラスを /A で出る タスクメニューから確実に 排除する コードを入れました。( 此の "WorkerW" を Close してしまうとデスクトップがかなりおかしな 事になる時も有ります )
後 何らかの原因で プログラムマネージャーを認識出来ないと自分自身が立ち上げ等なくなってしまうので  プログラムマネージャー認識を再トライするコードも加えました。
2018/11/10 Ver 2.840
デスクトップにある タスクメニューを出す 内部コマンド /A の SW に Ms IME や ATOK パレット 等を メニューに入れたくない時にも使用出来る 無効になっている( Disable ) ウィンドウはメニューに 入れない D を加えました。同時に デスクトップに有る TaskMenu に必要の無いウィンドウの排除を 共通した 効率の良い方法で処理する事で大幅にサイズダウンと無駄を無くしました。
後 立ち上げが無効な時には マウスカーソルが ディスクトップ背景 又は タスクバー上で Control + Shift  キー を押しながら 戻る 進む キーを押す事で 右クリックメニューを出す事が出来る様にしました。
2018/12/10 Ver 2.900
デスクトップにある タスクメニューを出す 内部コマンド /A の SW に ファイルの プロパティーやバージョン ダイアログボックス等のポップアップウィンドウを出している 親ウィンドウはメニューに入れない P を O とは 排他的な動作で入れました。
デスクトップに存在するウィンドウが Windows 10 Ver 1809 から余分な物が増えたので此に対処しました。
2019/02/25 Ver 2.920
メッセージを取得してからのプロシージャーに廻すのを 決め打ちではなくより汎用性の有る方法に変えて 万が 一の間違いが起こりにくい様にしました。
2019/04/20 Ver 3.000
フォアグラウンドウだけを指定する 内部コマンド /F を新設しました。
ULC メニュー は フォルダー表示がドライブの時には Net を開く が有効でなくても ネットワークドライブかを 必ず確認する事にしてネットワークドライブの時には Net を開くのメニューを出す事にしました。
システムのメニューが先に出てしまった時でも確実に此を消してから ULC メニューを出す様にしました。
何らかの原因でデスクトップがリセットされた時に プログラムマネージャー タスクバー認識を早い時期に 出来るような コードに変えました。
コマンドメニューが出て選択された時のカーソルが右にあるか左にあるかの判断する API を 効率の良い物に 換えました。
2019/07/05 Ver 3.020
基本のコマンドセット の 書式で 指定パラメーターに QCB を新設して パラメーターに クリックボードテキストを 指定できる様にしました。
2019/09/20 Ver 3.100
要所要所で必要だと思われる所でツールティップ擬きの説明を入れる事にしました。
通常使用のタイミングを取得する物と Wクリックで使用するタイマーを統一して途中の経過時間を計れる 要にすると同時に コードを単純化して効率を良くしました。
ULC メニュー が より Original メニューと重ならないで 安定して出る様にしました。又 この時に フォルダー表示の アクティブ色 インアクティブ色がタイミングが間に合わなくて取り違えるのを無くしました。
後 内部コマンド /A でタスクメニューを出した時に 個人用のテーマでアイコン文字やアイコンのサイズを 変えているとメニューサイズとアイコンサイズがずれてしまう事を修正し 常にシステムメニューと同様な メニューが出る様にしました。
2019/11/25 Ver 3.120
内部コマンド /CB クリップボードの実行 と /A で 出る タスクメニューにも 動作ガイドとしてチップス 擬きが出る様にしました。
此に伴って タスクメニューも本体との連携を深くして動作に無駄がない様に 重なっていたガードのための 変数 タイマー動作等を 整理して 出したタスクメニューは 戻る 進む ボタンで確実に消える様にしました。
2020/03/05 Ver 3.140
各行のコマンドライン解析の時に フォルダー ファイルの 先頭を取得するコードのポインター位置がずれて いてコマンドの書かれ方の順序によっては正しく認識しない事が有るのを修正し フォルダー ファイル 名 を 取得した時の 重みを重くして余分な SW でコマンドの区切りが左右されない様にしました。
コマンドライン の書式で パラメーターの方にも "--" で囲まれている場合でも取り違いを無くしました。
2020/04/05 Ver 3.200
どちらにしても コマンドを書いたテキストを読み込むので最初の行に設定を残して立ち上げ時の コマンドライン からの 設定は コマンドを書いたテキストファイル指定だけにして 使い勝手を良く 又 コードサイズもま減少させました。
従って 今までの BwFwButn.bwf で最初に立ち上げると指定形式でないとはじかれてしまいますが 今までの 先頭の 
BwFw を @@@@@@ か ABCDEF の文字に変えて再度読み込んで下さい。( @@@@@@ ABCDEF は設定と共に変わります。) 今まで コマンドラインで指定していた設定の /SWは 必要ありません。
新たな コマンド opn.ext を新設しました。
コマンドを書いたテキストファイルの最後の行の書き方によっては 最後のコマンドを認識しない事が有るのを 無くし 又 コマンドが偶数でなくても 最後が表示されるようにしました。この他 コマンド行の不整合が 出そうな所をより確実だと思われる物に変えました。
立ち上がる時のタスクトレイに表示しない扱いをストレートで無駄の無いものにしました。
2020/06/30 Ver 3.240
マルチモニター環境に対応しました。
先に立ち上がっている BwFwButn にメニューを出さすのは コマンドライン /M を入れるか 立ち上げる時に Shift キーを押しているかの選択にして二重起動時の余分な確認は無い方向にしました。
メニューを出した後は自分は速やかに Background に待避する様にして出来るだけメニューを出す前の 状態に早く戻し 他に与える影響を出来るだけ少なくしました。
2020/08/20 Ver 3.260
内部コマンド /CPtab200tab300 の カーソルポジションがマルチモニターに対応して いない ( -200tab-300 ) 等のマイナス指示に対応していないのを修正しました。
メッセージを出す時に 左上にアイコンを表示する様にしました。
IME を使用する事は無いので最初から使わない宣言をして常駐量を減らしました。
2020/10/25 Ver 3.300
On スクロール 機能を見直して カーソル位置が何処に有るかを検出してから条件でスクロール方法を変える 様にして 柔軟性を拡大しました。此の為 付加メニューも └アクティブ から└Ac.シグナル に変えました。
スクロールホイール + Shift キーは 横スクロールホイールバー上にマウスカーソルが有る時には Shift キーを 押さなくても能するようにしました。但し 横スクロールホイールバー上にマウスカーソルが有る事を検出出来ない ソフトのために + シフトキーは残しています。
横 スクロールホイール + Control キーは殆どする事もなく 他の機能と被る事が多いので廃止しました。
Middle ボタンの作動する条件と 説明Tip が整合性のない所を修正しました。
タスクメニューを Enter キーで決定した時に キー入力 Enter が他に悪さをする事が無い様にしました。
2020/11/30 Ver 3.320
内部コマンド /A のタスクメニューの位置指定がマルチモニター時の マイナスに対応していなかった ので -200,-300 等に対応しました。
2021/01/30 Ver 3.360
内部コマンド /A のタスクメニューの F メニューの一番始めを一つだけ選択した時に 此をクローズ する SW で クローズ した後での フォアグラウンドウィンドウは システムに任せるのではなく 必ず クローズ したウィンドウの次の物が フォアグラウンドウィンドウになる様にしました。
ULC メニューを出す時に 元のシステムメニューが出る可能性をより減らしました。
自分のメニューを消すコードを確実性の有り 若干効率の良い物にしました。
2021/03/20 Ver 3.400
コマンド(ファイル名 ) の所に CLSID を直に書くとその機能のウィンドウを開く様にしました。
ファイル名 フォルダー名 のコマンド行を Control キーを押しながら 選択した時には それを選択して フォルダーを開けるのは Control キーでは 表示を正確さにかけるので キーを無変換キーに変えました。 Control キーは 同時に押していると指定したアイテムのプロパティーを開く事にしました。
コマンド パラメーターに CR (0x0D) が残ってしまう事が有るのを無くしました。
内部コマンド /CB クリップボードの実行はは小回りが利く様に内部バッファを使用する事にして 文字数の 制限 ANSI文字で 376文字が付きましたが ライン行の順序通りに行える様になりました。
複数のコマンド行を処理した時に前の処理を確認してから次のコマンドを発出する様にしました。
サイドボタンの長押しで コマンドメニュー のチップを出してより長く押すと設定メニュー キャンセルと 変わる様にして Shift キーを押さなくてもメニューに入れる様にしました。
新に開けたウィンドウの 位置を指定位置に移動する 新しい 内部コマンド /NP /NF /N0 を新設しました。 此と同時に新に立ち上げたウィンドウの認識の為 立ち上げた物を確実に待つ事にしました。
サイドボタンでのクリックでウィンドウの場所によってはアクティブ化がはっきりせずに動作も定まらない 事が有るのを此の時は押された物を特定するコードを入れて動作をすっきりさせる様にしました。
内部コマンド /A でのタスクメニューは Windows 10 でデスクトップに増加した目に見えないタスクをより 正確に排除する 様にしました。
メニューのバージョンの位置で 右クリックで 同じフォルダーに BwFwButn.txt が有れば此を開く様にして メニューにも 右:テキスト表示 と出す様にしました。
2021/06/20 Ver 3.440
サイドボタンが押される場所やタイミングによってはタスクメニューに自分自身がカウントされて入ってしまう 可能性を排除しました。
クラス名 タイトル を指定する内部コマンドは クラス名 無しだけでなく PFG と入れる事で 最後に アクティブだった ( マウスカーソル直下の ) ウィンドウのクラスを指定した事と同様にしました。
自分のメニューを消すのをよりダイレクトに消す API に変えました。
2021/07/30 Ver 3.460
/A でのタスクメニューの終わり方によっては 次に出るのが一テンポ遅れたりすぐに出てしまう事がない様にしました。 同時にタスクメニューが出ている時に 選択タスクをサイドボタンで押すと タスクメニューを終了せずに通常の ウインドウの前面に表示する様にしました。
マウスボタンのチャッタリングの防止コードを入れて 短い押し 長押しの区別をはっきりさせて動作を 安定させました。
2021/09/10 Ver 3.480
メッセージキューに残っている タイマーメッセージが悪さをしない様に排除するコードを入れました。
2021/10/10 Ver 3.500 
長く押していた時に出る キャンセル Flag も時間が来たら消す様にして メッセージが交錯して サイドボタンの  アップメッセージが取得出来なくて キャンセル Flag が取り残される事を無くしました。 又 キャンセル後のタイマーメッセージの搬出の無駄も無くしました。
マウスボタンのチャッタリングの防止をより確実なタイミングにしました。
ULC メニュー を出す時には Fol.Menu の Tipp を表示する様にしました。マウスの右ボタンが押された時に すぐに直下の確認をして ボタンが離された時に 出来るだけ速く ULC メニュー を出す様にしました。
ULC メニュー のアクセラレーションキーが効いていない状態を修正しました。
2021/11/25 Ver 3.600 
Menu Rボタン の設定を新設して Right ボタンでの選択が出来ないメニューでも選択が出来る様にしました。
メニューが アクセレレーターキー ( アクセスキー ) で選択された時も 此の押されている キーが他の  プログラムに 出来るだけ悪さをしない様にタイミングを待つ事にしました。此の為 メニュー以前に  フォアグランドだった ウィンドウは 積極的にフォアグランドに戻さなくしたので 直前の フォアグランド ウィンドウが 欲しい時には 先行して /F の一行を入れてください。
タスクトレイからの左クリックでのコマンドメニューを 0-9 A-Z のアクセスキー で選択 した時に 左右コマンドを 選択する Shift が逆になるのを修正しました。
設定 フィルター ブラウザー が保存出来ない 不具合 を修正しました。
/A で 出る タスクメニュー に Windows 11 で増えた余分な デスクトップ Item を排除するフィルターを 入れました。
/CB での コマンドを与えた時に Space 区切りが旨く切れない事が有るのを修正しました。
2021/12/20 Ver 3.640 
使い終えた Global 変数の処理忘れで 思わぬ時に反応してしまう事が有るのを修正しました。
ULC メニュー を出した後に 場合によっては出る 確認ダイアログで プログラム全体の動きががそこで 止まってしまう事が有るのをなくしました。
チャッタリングの防止コードを新たな発想の物に改善をして より確実に 余分な案内フラッグも出ない様に しました。同時に ボタンを長く押している内に出る案内フラッグもフラッグを出す直前に一回だけ整合性を 確認するだけにして その都度確認のをする無駄を省きました。
/A で出る タスクメニューの フィルターの抜けが有ったので修正しました。
/M と /? の メッセージ説明に改行をサポートする書式を加えました。
2022/02/10 Ver 3.680 
設定の Menu Rボタン が有効な時には フォームのメニューも右ボタンで開く様にしました。
/A で出る タスクメニューの一番上のウィンドウが最大化している時には此を選択すると通常のサイズに戻す 機能を付けました。
ULC メニューからの他のプログラム立ち上げの状態を出来るだけエクスプローラーからの状態に近くして 挙動の不自然さを少なくしました。
プログラムによる擬似的な マウスボタン Down Up の連続した動作により内部メッセージ処理に時間が かかり ハングアップした様になる事を避ける様にしました。
2022/04/30 Ver 3.700 
内部的に動作をやり取りするメッセージポストが機能をしたり表示を変えたりする ウィンドウズメッセージに 係らない様に順序正しく廻る様にして安定性を上げました。
同時に チャッタリングの防止確認は スレッドを止めて待つ事をやめて連続して廻しながら確認する事にして チャッタリングの回数検知の制限を無くし 確認時間を 1/10 以下にしました。
ULC メニュー を立ち上げる時に 内部の待期関数に係らない様にして若干ですが( 少なくても 30ms以上 ) 速く メニューが出る様になりました。
Menu Rボタン の設定と 動作時の Shift キー は 設定と逆の 働きをさせる様にしました。
Menu Rボタン は 他のプログラムの R ボタンとの関わりを少なくするために 長く押されて離された ( 約 0.5 秒 ) 以上 の時には動作をしない様にしました。
2022/06/25 Ver 3.740 
Windows x64 環境での C:\Program Files (x86) の様に Space の後に記号の場合に フォルダー関連の区切りを間違って 判断してしまうのを修正し 同時に その他の Space 区切りのコマンド行の解析も間違いを少なくしました。
クリップボードテキストを パラメーターに指定する qcb は スペース区切りでは区切りにくいので %CB にし 新に "CB" を新設して "クリップボードテキスト" を "" で囲む パラメーター指定様式を付加しました。
内部コマンド /CB や パラメーター指定様式 %CB "CB" での クリップボードテキストでのパラメーター指定時に データバッファが足りない時でも出来るだけ データバッファ以内でのデータは取得して実行する様にしました。
チャッタリング検知の確認コードを若干ですが効率の良い物にしました。
2022/07/25 Ver 3.780 
バージョン を 右クリックで選択すると同じフォルダーに BwFwButn.txt が有ると此を 開きます。 が 開けないのを修正しました。
チャッタリング検知のタイムラグは 1ms では少なすぎたので 15ms にしました。此の為 機種によって 時間の差が出てしまう Message Post ではなく 待機中に余分な事の無い Timer で待つ事にしました。
サイドボタンでのフォアグランドの切り替えの認識が悪い時のウィンドウ検知コードをより確実な API で 行う様にしました。
2022/08/25 Ver 3.800 
タイミングによってはおかしな所の右ボタンアップで Fol.Menu の チップが出てしまう不具合を修正しました。 又 可能性の無い時は 無駄な Fol.Menu の チップ を出さない様にしました
内部コマンド /A で出るタスクメニューに Windows11 でさらに増えたデスクトップの見えないウィンドウを 排除する様にしました。
内部での余裕の為の待ちや重なった所のキー待ちを整理して余分な事の出ない様にしました。
2022/09/25 Ver 3.820 
対象ウィンドウによっては マウスボタンの 左右 中央 サイド の押され方によって カーソル下の ヒットテストの戻り値が違う物が有るので重要な所では再確認のコードを入れました。
2022/10/25 Ver 3.840 
Windows 11 の 22H2 から始まったタブ付きのファイルエクスプローラーでは NCAHITTEST の返す値が おかしいので此を使用する ULC メニュー とミドルマウスボタンの動作が所定の所で出る様に 調整しました。
2023/01/15 Ver 3.860 
戻る 進む ボタンが押された時に 押された場所によって フォアグランドに成ったり 成らなかったり ( この 場合は タスクバー上のアイコンがピカピカしているかも ) するので 後の動作の安定の為 しっかり フォアグランド にする為のアシストを入れる様にしました。
2023/04/20 Ver 3.900 
無変換キーを押していると Middle ボタンの制限とフィルターでの制限を無視して何処でも動作を開始する 様にしました。
キーストロークの搬出を若干余裕の有るタイミングに変えました。
/A でタスクメニューを作成 表示する時に Windows 11 でデスクトップに開いている ウィンドウの数と ディスプレーの設定によっては縦に並べるタスクメニューが予想と違う形になってしまうのを修正しました。
2023/06/05 Ver 3.920 
自分のパスと コマンドラインを取得する所を統一して重複を無くし パス最終の 確認をする為の文字列値の 値のチェックも入れました。
\\ から始まる ネットワーク器機のルートを直に開けるコマンド ( \\192.168.1.11 等 )に対応しました。
2023/08/10 Ver 4.000 
新たな オプション Sys. メニュー を新設しました。此に伴って 設定項目が増えたので 設定の確認を 効率化しました。
2023/09/25 Ver 4.020 
オプション Sys. メニュー の排除フィルターが行き届かない所を修正しました。
Sys. メニュー を出す時には 通常通り出すプログラムをフォアグランドにセットしてメニュー動作の 違和感を無くしました。
子ウィンドウから親ウィンドウを探す API を効率の良い物にしました。
Windows 11 のTab Explore の 最近された アップデート構造に対応しました。
2023/11/15 Ver 4.040 
Sys. メニュー を出すときのガード SW が ULC メニューを出す時のタイミングと重なり ULC メニューが 出ない事が有るのを修正しました。
2023/12/15 Ver 4.100 
コマンドセット を実行する時にコマンドセットのタイトル ( メニュー文字列 ) をチップとして表示する様に し チップの ON OFF の動作コードを整理し サイズも減少しました。
Sys. メニュー を出すウィンドウ ( プログラム ) 範囲を拡張しました。同時に メニュー が 出る タイトル の高さを通常の高さに調整し 余分な所で出ない様にしました。
Windows 11 の ULC メニューの出る範囲を拡大調整してより違和感の無い様にしました。
Menu Rボタン の設定と Sys. メニュー の設定が被っていて 設定と違う動作になってしまっていたのを 修正し Menu Rボタン Sys. メニュー の設定を Shift キーで反転できる様にし明記しました。
2024/02/25 Ver 4.120 
Sys. メニュー で 取得した Sys. メニュー の 閉じるが 無効になっているのを 有効にして ポップアップさせる様にしました。
2024/03/30 Ver 4.140 
立ち上げ時にする事のコードを整理してすっきりした物にしました。
設定の 立ち上げ と タスクトレイ が両方とも OFF になる事を無くなる様にして 自分自身で自分が コントロール出来なくなる事が無い様にしました。
マウスボタンの押された場所によっては フォアグラウンドウィンドウが特定できない事が有るのを 候補だけ確認 記憶して 余分な補佐はしない様にしました。
2024/04/20 Ver 4.200 
チャタリングガードのフィルター掛けの判断違いのせいでメニューの出ている時の Shift や マウスの Rbuttom クリック 場所の選択で 仕様通りになっていないのを修正しました。
同じ様な事をするルーティンを統一して間違えが少なくコードも少なくして効率を良くしました。
チャタリングガードをマウスの Lbuttonにもかける様にしました。
/A で出るタスクメニューにデスクトップのウィンドウの状況によってはタスクバーが隠されて表示されない 状況が出る事が有るのでこの様な時には タスクメニューの一番下に Shell_TrayWnd (タスクバー)の  メニューを出して 此を選択する事でタスクバーを全面に出すことが出来る様にしました。
メニューに左.. 右.. と出るメニューはボタンだけでなく位置の左右でも切り替えられる様にしました。
此の辺りが 解り難くなったので 同梱の BwFwButn.txt に 【メニュー 選択 決定】項目を入れました。

 最新版 04/20 2024 Ver 4.200 Size 44 kb BwFwButn のダウンロード

 

BwFwButn は BwFwButn.bwf が 全てで サンプルコマンドも同梱しているのですがそれとは別にちょっと気がついた 便利なコマンド 通常使用しているコマンド 考えられない様なコマンド 等を書き留めて おもしろコマンド として置いておいておきます。
−戻る−