CabwcPos

最新版 04/10 2024
【概要】 
Windows 7 を常用してみると 各々のフォルダーウィンドウ ( エクスプローラー ) の位置 サイズを覚えて いないのではないかと 思う様にないました。( 一番最後に閉じたウインドウ状態だけ覚えてて 全ての ウインドウをその状態から並べて開こうとするらしい。確認してみると Windows 8 10 11 も同様な仕様の様です。) 仕様の評価はとりあえずとして 此では不便なので プログラムによって 各々の フォルダーウィンドウの 位置と サイズを 再現出来る様にと 此の CabwcPos を作成しました。
ちなみに CabwcPos は解りにくい 名前ですが フォルダー表示をするウィンドウは Windows 95 から変わらずに クラス名が CabinetWClass で 統一で Windows 8 10 まで変わりが無いので Cabinet Window Class Posision を 適当に短くして CabwcPos と付けました。

【特徴】
常駐させれば その時点から有った 各フォルダーウィンドウ ( エクスプローラー ) の位置 又は 新たに開かれて  位置 サイズ を変えられた物は記憶して 次回に そのフォルダーを開く時に 最後に閉じた位置とサイズで 開く 様にします。( 開いただけでは記憶はしません。サイズの調整か 位置の移動が あった時点で記憶します。)。
実際には 記憶した位置に開く様に するのではなく 開く 位置 サイズは ウィンドウ が決めた所ですが すぐに 記憶した位置に移動しサイズを調整します。したがって多少のちらつきが有るかと思います。

【動作環境】
Win XP / Vista / 7 / 8 / 10 / 11 です。特別なランタイムはいりません。
但し 意味のあるのは 位置 サイズを 覚えていない Windows 7 / 8 / 10 / 11 となります。

【インストール/アンインストール方法】
適当な所に CabwcPos.exe を置いて下さい。そこから ショートカット を作って立ち上げて下さい。 各ユーザーの アプリケーションフォルダー ( shell:AppData で開けられます。 ) に CabwcPos.pkg と言う 位置とサイズを 記憶した ファイルを残します。( サイズ 16.00 KB (16.384 バイト) ) アンインストールは単に CabwcPos.exe と作成したショートカット を 後 各ユーザーの アプリケーションフォルダー に有る 記憶データ CabwcPos.pkg を削除して下さい。

【使用方法】
通常は スタートアップに登録して動作させっぱなしと言う事になるかと思います。
立ち上げ時に オプション設定用のマンドライン 指定が出来ます。
通常はタスクトレイにアイコンが出ます 此を左右クリックする事でメニューが出ます。

設定 メニューが 出て何時時に メニューアイテムの タスクトレイ より上のメニューは そのアイテムを 選択している 時に Space キーを押すと チェックを反転する事が出来ます。( 有効 無効 を反転する )
通常はフォルダーウィンドウを閉じる時 位置 サイズを 変えた時に その都度 その位置を記憶しますが この時に 無変換 キーを 押しているとその位置は記憶しません。 同様に 開く時 に記憶している位置 サイズに移動しますが 無変換 キーを押していると 此の動作をしません。
又 フォルダーウィンドウをアクティブにする時に マウスの右クリックで フォルダーウィンドウの右上のクローズ ボタン上をクリックすると記憶している此のフォルダーウィンドウの位置とサイズを消去して 他の ウィンドウの 為に バッファを空けます。( 確認の為 問い合わせのビープ音が鳴ります。) 此のフォルダーは削除などして二度と 開けないとかで 記憶は必要のないと思う時には行って下さい。( バッファ が目一杯でない時には得に必要も無い とは思います。) ただし 閉じて再度開いたり ウィンドウサイズを変えたり 動かしたりすれば再記憶します。
フォルダーウィンドウの左上のアイコンの左クリックは無条件に現在の位置サイズを記憶します。
デスクトップの背景をクリックした時と タスクバーがアクティブになった時にはデスクトップ上に有るフォルダー 表示ウィンドウ( エクスプローラー )の位置をデータに記憶している物は再確認します。 その時に 同時に Shift キー が押されているか 一度 背景をクリックされた後 2秒以内にクリックされると 押していると 記憶していない物も含めて全て再確認記憶します。
二重起動は認めませんが コマンドラインに /M が有ると先に起動している CabwcPos にメニューを出させます。

【コマンドライン】
/M で先に常駐しているCabwcPos にメニューを出させます。常駐している物が無い時には通常通りに常駐します。

【立ち上げ時のキー】
設定の タスクトレイ 今回限り では無いのを オーバーライドします。
Control : 常駐しているCabwcPos が有る時には 此にメニューを出させます。
     : 常駐しているCabwcPos が無い時には タスクトレイにアイコンを表示して立ち上がります。
Shift : 常駐しているCabwcPos が有る時には 此にメニューを出させます。
   : 常駐しているCabwcPos が無い時には今回限り を有効にして立ち上がります。

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

【履歴】
2014/02/10 Ver 1.000
Windous 7 8 が フォルダー表示の 位置 サイズを覚えていない様なので此に対処する為に作成しました。
2014/03/02 Ver 1.200
確実にサイズの変更 ウィンドウのクローズ オープン を認識する為にメッセージ取得の方法を変えて 確実に必要な情報を取得出来る様になりました。この為 無駄に余分な状況の取得をする必要が無くなり 何もない時の常駐している時には全く何もせずにシステムに負荷をかけない様になり 必要な時にはより速い 対応が出来る様になりました。又 Control キーを 押しているとその時の動作は何にしても無視する オプションを付けました。
当然の事ですが CabwcPos.dll とセットです。Ver 1.000 とは互換性は有りません。両方セットで換えて 下さい。後 フォルダー認識の文字を一字増やしていますので 記憶データ CabwcPos.pkg も互換性が 無くなっています。一度 リセット した方が無駄がなくなって良いかと思います。 ( しなくても問題は有りません。)
2014/03/22 Ver 1.300
今回限り のメニューを新設して 記憶した位置サイズをロードしないで始め 終わる時もデータは 残さない動作をはっきりさせ 途中で切り替える事も出来る様にしました。
ウィンドウがシャットダウンする時に内部的な事後処理が間に合わずに 記憶したデータを CabwcPos.pkg に セーブするのが出来ない様な事を避ける様な終了コードを採用しました。
内部的な設定の記憶を配列型式から数値のビット列の形にして効率を上げました。出来るだけウィンドウを 動かした時のちらつきを少なくするコードにしました。
二重に起動しようとした時の扱いを 先に常駐している物に常に設定メニューを出させる様に変え 余分な 二重起動の警告はやめました。
最小化 最大化している物に関しても 開いている数の内に入れる様にして リストアした時の位置サイズの 動作の 対象とすると同時に 最大化して開く物に影響してしまう不具合も修正しました。
CabwcPos.dll は 最大化 最小化 リストア時 のメッセージも出す様にして CabwcPos.exe と合わせました。 又 誤動作を招きそうなパスが有ったので此はやめて CabwcPos.exe で確実に処理する方向に一本化しました。
2014/09/30 Ver 1.320
フォルダーウィンドウの 認識が出来たら それ以上待つ事なく 直ぐにこの認識したウィンドウを記憶した位置と サイズに動かす事にしました。一度保証された状態を再度確認する無駄はやめました。dll は 必ず状態を 保証してからポストする様に 又 認識効率コードを良くしました。
2015/01/02 Ver 1.322
ウィンドウのシャットダウンと共に終了する時に出来るだけ早い反応で終了するコードに変えました。
2015/02/28 Ver 1.330
画面のサイズが変えられた時に ウィンドウを動かす位置に不具合の出ない様にし 又 サイズ 位置を変更する基準を 変えて 不具合な位置を記憶している時には 後で不便の無い位置サイズに 調整して移動する様にして サイズが 変えられない程に大きくなってしまう事が有る可能性も排除しました。
2015/04/05 Ver 1.400
二重に記憶していたデータを最後に記録するデータに直にメモリーする事で 取りこぼしを無くして且つ効率も 良くしました。短い間に起こる クローズやオープンにも対処できるように 又 一連の動作が終了してから 確認して余分なループをしない様にしました。
フォルダー認識データの代入方法を変えてより広範囲で確実に認識出来る様にしました。この為今までの フォルダー認識と違ってくるので 一度 データのリセットをして下さい。
CabwcPos.dll も此に合わせて送出するメッセージを整理しました。
CabwcPos の動作を一時的に止めるキーは Control では色々な機能と被る事が多いので 無変換 キーに 変えました。
2015/05/30 Ver 1.420
サイズ調整と位置移動 をそれぞれ分離して機能も出来る様にして 此に関する メニューと コマンドラインオプションを 付加しました。
DPI スケーリング は自身でする事を宣言し OS がする DPI スケーリング によって位置やサイズが違ったり ニューの 文字が影響を受ける事を避ける様にしました。
2015/09/05 Ver 1.430
アクセス権の無いフォルダーを開こうとした時等にエクスプローラーのダイアログ等が出る様な時に 此を待ってしまう事が 無いように 避けるコードで対応しました。
開いた エクスプローラー が準備が出来るまで待つ時のタイトルの決め打ちをやめてその環境での初期値を確認する事にして 環境対応の柔軟性を上げました。此の部分だけなら言語の違いも吸収出来るのではないかと思います。
2015/10/05 Ver 1.500
CabwcPos を管理者権限で実行すると CabwcPos.dll が メッセージをポスト出来なくなってしまい 何も反応しなくなる事を 修正しました。フォルダーウィンドウを認識する文字列を待つ時に 最初に取得した文字列を DLL から送られたウィンドウが 作成された時のタイトルと 比較をする事で その変化を待つのが妥当かどうかの 判断を早く正確ににする事が出来る様に なりました。この為 必ず CabwcPos.dll とセットで換えて下さい。
開くを詳細 のオプションとコマンドライン /D を付加しました。
2015/11/30 Ver 1.520
既定サイズのオプションとメニューコマンドライン指定を付加して新たに開かれるフォルダーウィンドウでも サイズを統一出来る様にしました。CabwcPos.dll は分岐条件が重ならない様にして多少なりとも効率を良く しました。
2016/08/05 Ver 1.530
COM に関連するプログラム API の為に 宣言は スレッドで確実にする事で 重複等の無駄が起きない様にしました。 dll から Hook の結果を送るのを より汎用性が有り exe のコードに無駄が出ない物に変えました。
CabwcPos.exe CabwcPos.dll 共に変えて下さい。
2016/11/05 Ver 1.550
新しく開かれたフォルダー表示ウィンドウが落ち着くまで待つのを関数内で待つコードから スレッドループで 待つ方法に変えました。此により 新しく開かれる事が重複しても同時に処理に移れる様になり 待機時間の重複も 無くなり反応も外部 内部 共に速くなりました。今の所同時に8個までの対応にしていますが 現実的には実験でもしない限りそれ以上の必要は無いかと思います。
CabwcPos.dll も此に対応し 内部的に送るメッセージも整理して本体の効率も良くなっています。
CabwcPos.exe CabwcPos.dll 共に変えて下さい。
2016/11/25 Ver 1.600
カーソル移動のオプションとコマンドライン /U CabinetWClass を使用する コントロールパネルも対象にするかどうかの オプション コントパネルとコマンドライン /L を新設しました。
記憶する 数を 256 から 384 に増やしました。同時に内部的な並べ替えを効率の良い物にしています。
固定サイズ メニューの選択時に ターゲットウィンドウを判り易くする様にアクティブ色にする様にしました。
記憶データの リセット はより間違いの起こりにくい 又 意識的に セーブ と ロードの出来る 汎用性の有る 方法に換えました。
CabwcPos.dll は フォルダー表示ウィンドウとして可能性のある ExploreWClass にも対応しました。
2017/01/10 Ver 1.700
サイズ 位置を変える時には 対象ウィンドウの状態を見て反応時間を変える事にして 出来るだけ早く 移動処理をする コードにして ウィンドウの画面のちらつきを減少させる 様にしました。此と同時に認識できないウィンドウを 待つ時間が切り上げられ反応が良くなりました。
開くを詳細 のオプションでも 相手の反応によって待ち時間を変える様にして無駄な待ちを無くしました。
後 関連している ウィンドウを閉じる 全て 閉じる のメニューを新設しました。この関係でコマンドライン SW の 閉じて終了 を /C → /Q に変えました。
規定サイズを取得する基準となる 一番上のウィンドウを 条件によっては取り違える事を修正しました。
CabwcPos.dll は 送るコマンドを若干変えてありますので 同時に新しくして下さい。
2017/02/25 Ver 2.000
開くを大きく ボタンに移動 を新設しました。位置移動 サイズ調整 をしない コマンドライン設定の不具合を 修正しました。既定サイズメニューの表示や決定のリアルタイム変化も確認のし易い物にしました。
CabwcPos.dll は メッセージ取得の再設定機能を付加し 必要のないメッセージを排除して CabwcPos.exe に 出来るだけ付加の掛からない様にしました。同時に CabwcPos.exe は自分自身の内部の相手に対する待ち時間の 繰り返しで ハングしている様になる可能性を排除しました。
あまり影響は無いとは思いますが このバージョンから Win 98 NT4.0 は対象外です。
2017/04/05 Ver 2.020
内部的に他のプログラムの変わるのを待つ時には 統一した パックした形で待つ事にして 待ち時間の重複が出ない様に しました。
開くを詳細 開くを大きく ボタンに移動 を1つのウィンドウには統一した物にして無駄を無くしました。
検索等でタイトルバーが変わってしまう事で違うウィンドウとして認識してしまい記憶しているデータの無駄が 出てしまうのを防止しました。
2017/08/10 Ver 2.100
Windows 10 8.1 の コピー 確認や プログレス表示の "OperationStatusWindow" の 表示 その他の作成された プログラムフォームの最初の表示のアクティブ化を補助する アクティブ+を付加しました。
又 此処の所の待ちを整理して途中でも判断する様にして要らない時には効率よく取り下げる様に かつ 判断する 時期も新しいウィンドウ用にも調整して ボタンに移動 の範囲も広げました。同時に何個かのウィンドウを 扱う時にメッセージの順序が正しく廻る様に メッセージの廻し方をウィンドウポストから スレッドポストに 変えました。
一度 フックを取得したら 殆どトラブルも無くする必要も無かった再フック ( バージョン OK + Control )は 無駄になるのでやめました。
多少足りない事も出て それ程の負荷にもならないので記憶するフォルダー数を 384 から 512 に増やしました。
CabwcPos.dll には "OperationStatusWindow" クラス取得のコードが入りました 同時に変えて下さい。
2017/10/05 Ver 2.200
エクスプローラーのエラーでタスクトレイのアイコンが失われた時に内部の保持デートと 整合性がとれなくなり タスクトレイのアイコンを表示出来なくなる事を修正しました。
背景長押し の機能を付加し メニュー コマンドライン /J を新設しました。
画面の解像度が変わった時でも此に追従して自分で再修正出来る様にしました。
CabwcPos.dll は 何らかのシステム上の理由で メッセージ受信のチェーンがおかしくなった時に此を回復する 為に 一時停止 再開 は内部で メッセージ受信のチェーンから外れ 又 チェーンに入る動作にしました。 したがって CabwcPos.exe CabwcPos.dll 同時に変えて下さい。
2017/11/15 Ver 2.220
新たに開かれたフォルダーウィンドウの位置とサイズを動かす時に余分な書き換えが 起こらない様なコマンドを 採用しました。( 場合によっては 動きが自然になりました。)
背景長押し の時に フォルダー確認作業を二度してしまい システムの状況によってはカウントアップが 開始されなくなってしまうのを修正しました。
CabwcPos.dll は 背景 ( Progman Shell_TrayWnd ) の判定条件を厳しくしました。
2017/12/05 Ver 2.240
アクティブ+ を "OperationStatusWindow" 意外の物にも余分な事をしすぎている事が有って 場合によっては  不自然な事も起こるので 此を修正しました。
アクティブ+ と ボタンに移動 が共に有効で OperationStatusWindow の時には此のウィンドウがマウス カーソルの下に来る様に移動する様にしました。
2018/01/05 Ver 2.260
通常のダイアログもアクティブ+ の対象にしました。又 アクティブ+を強くかけるのは OperationStatusWindow  だけにして 他の物は 作成された時だけ ユーザー アカウント制御 から立ち上げられたプログラム も意識しながら  全体に影響のない程度にしました。
背景長押し機能での 右クリックメニューが デスクトップや タスクバーメニューの 右クリックメニューと 出来るだけ被らない方向にタイミング調整しました。
CabwcPos.dll は 内部的な動きを整理してコードを単純に解りやすくし CabwcPos.exe にメッセージを送る 必要の無いウィンドウの範囲を若干広げて マウスのクリックも 考慮に入る様にして 無駄が無くおかしな事が 起こる可能性を少なくしました。
2018/02/10 Ver 2.280
メニューが出ている時に 遅れて立ち上がったプログラムへの アクティブ+ が働いて メニューを 消し飛ばしてしまう事が有るので此を修正しました。
2018/04/10 Ver 2.300
アクティブ+ から ボタンに移動 に移る時のタイミングが早すぎて アクティブ+ がおかしな挙動になる事が あるので 此の間の時間調整 順序調整 をしました。
単発的に出てくる使い捨てのファルダー位置を長く覚えておく必要は無いので フォルダー表示の頻度を加味して バッファに記憶する位置を切り替えてバッファの順送りを出来るだけ少なく 実質バッファを出来るだけ有効に 使用できる様にしてバッファの使用効率を上げました。
後 バッファの使用上で 区切りの危ない所を修正しました。
2018/05/10 Ver 2.400
記憶する動作を 記憶していない新しいフォルダーを開いただけでは記憶はしない様にして 記憶するのは  サイズを変えたり 位置を移動したりした時に変えて 開いただけのフォルダーに記憶バッファを割り当てる無駄を 無くしました。
背景長押し の機能にアクティブにする フォルダーウィンドウを左クリックで長く押していると他のフォルダー ウィンドウを全て閉じる機能を加えました。又 背景長押しの時にマウスカーソルが動くとキャンセルになる様に しました。
アクティブにする フォルダーウィンドウの右上のクローズボタンを右クリックするとそのフォルダーウィンドウの 記憶しているデータを削除してバッファを開ける機能を付加しました。
CBT_Hook だけではデスクトップのアクティブウィンドウが変わった時しか反応が無く 若干使用しにくい所も 有るので マウスボタンの ON も検知する様にしてフォアグラウンドウィンドウが変わらなくても ボタンの長押しと 右上のクローズボタンを右クリック は反応する様にしました。
CabwcPos.dll は 動作の切り替えの為にマウスの L Button での情報を付加して送るのと背景のウィンドウハンドルを 送る様にしましたので同時に変えて下さい。
2018/06/10 Ver 2.420
背景長押し の機能 は アクティブウィンドウが切り替わった時切り替わらなかった 時共に 同じ動作になる様にして 違和感を無くしました。
フォルダーウィンドウの右上のクローズボタンを右クリックして そのフォルダーウィンドウの記憶しているデータを 削除する時の クローズボタン の認識を相手にリクエストする事にして位置を正確にしました。
2018/08/15 Ver 3.000
CabwcPos.dll の CBTHOOK は 64bit Windows の兆候を捉えられないので CBTHOOK での運用はやめて 自前の アクティブ 検査ルーチンに変えました。此で 64bit 環境でも 32bit 環境でも プログラムが 64bitでも 32bit でも全ての組み 合わせで 動作する様になりました。
単発的なオープンで位置を記憶して削除された物については削除されてそのフォルダーが無くなった時点で 記憶した物を 消去して記憶バッファの無駄が出ない様にしました。
フォルダー表示ウィンドウを消す時には関連ダイアログを出している物については そのウィンドウは残して 消さない様にしました。
背景長押し の時に フォルダーの Close ボタン上でのプッシュは 確実に外す様にしました。
各ユーザーの アプリケーションフォルダー取得 API を整合性の有る使用方法にしました。
処理する為の時間を待機中でも確実に他からのメッセージを受け取る事が出来る様にしました。
マウスの状態の直接変化感知機能の利用を広げて ループの中でのマウスボタンの押されている事の繰り返し判 定はやめて マウスの状態の直接変化感知機能の利用の方に任せる事にして 無駄なコードを整理しました。
2018/09/15 Ver 3.100
自前の アクティブ検査ルーチンで アクティブになる前に 新しくオープンされる動作を表示される前に 捉える事が 出来る コードを入れてより早く移動する事が出来る様になりちらつきを少なくしました。
此の為 アクティブを確認するインターバルも大きくする事が出来若干ですがシステム負荷も少なくなりました。 又 多重にオープンされても矛盾が出ずにまたすぐに反応出来る様に コードも調整出来ました。
フォルダー表示ウィンドウの最大数は 64→128 個まで上げました 此は Windows 10 x64 環境では 70個ぐらい開く 事が出来る様で このバッファを 有る無しの確認にも使用しだしているので 超えて欲しくない為です。
基本的にアクティブになるのを確認して動く事になったので アクティブ+ 関連は削除しました。その代わりに 無駄な記憶メモリーを消費しない様に .3_ は除外する のオプションを付加しました。
2018/09/30 Ver 3.120
フォルダーが削除される時にそのフォルダーが記録されている物ならその記録を削除出来る可能性の有るコードを 入れました。
フォルダーが動かされたサイズが変えられた時の変化を確実に捉えられるコードにしました。
背景長押し の時に フォルダーの Close ボタン上だけでなく 最大化 最小化 ボタンも外す様にしました。
マウスボタンの押され方によってはメッセージが漏れてしまう時が有るのを直し 同時に 細かい所の不整合が 出るのを修正しています。
2018/11/05 Ver 3.140
フォルダーが削除される時にそのフォルダーが記録されている物ならその記録を削除出来る可能性の有るコードを 入れました。
アクティブウィンドウの切り替わり方によっては 背景長押し の機能が効かなくなる事が有るのを修正しました。 同時に タスクバーとプログラムマネージャーの判定をより正確にして 余分な所でおかしな事が起こるのを 無くしました。
最初から 対照にはならないウィンドウは メッセージを出さない様にしてメッセージの交錯を少なくしました。
削除されたフォルダーが記録されている物ならその記録を取り除く可能性の有るコードを入れました。
2018/12/05 Ver 3.160
左右のマウスボタンが押された時の確認は 必要なウィンドウの時だけに絞り不必要な 確認の為の待機をしないですぐに帰れる様にしました。此に伴い マウスボタンの背景長押し の機能が正確に 動作する様になりました。
Win 10 Ver 1809 から デスクトップアイテムの様子が変わったので此に対応して効率良く処理出来る様にしました。
2019/01/20 Ver 3.200
デスクトップアイテム で 動作に関連しない ウィンドウは最初から除外する事にして内部メッセージの無駄を 少なくしました。
フォルダーを作成する時の統一したタイトルテキストを割り出す様にしてそれと比較してフォルダー以下の 表示処理に時間がかかり フォルダー表示が遅い物でも想定処理時間まで待てる様に 又 間に合わなくて 不確実な時には中途半端な対応をしない様にしました。
関連するウィンドウに対しても相手がすぐに反応出来るかどうか確かめてから処理を始める様にしました。
2019/02/10 Ver 3.240
新たに開かれた フォルダー表示ウィンドウ が記憶された物でない時にも表示が重ならない様に 移動する 半幅調整オプションと コマンドラインオプション /A を新設しました。
背景長押し機能は メッセージが交錯していない事を確認してからする様にして 各機能が確実に始められ 処理出来る 可能性を高めました。又 フォルダー表示ウィンドウのタイトルバー長押し機能は 移動と 重なっているので 間違えやすいのでやめて 長押し機能が作用( 他のフォルダー表示ウィンドウを閉じる ) するのは 全て フォルダー表示ウィンドウのクライアントエリアにしました。
後 メニューを消した後に フォアグラウンドウィンドウのアクティブ色が狂ってしまう事が起こるのを 修正しました。
2019/03/15 Ver 3.260
.3_ は除外する は実用と合わない事が多いので .-_4 は除外する に変えて 4文字以上続いた時に 記憶しないに変えました。
フォルダー表示ウィンドウのタイトルバーはやはり感覚と合うので 残して閉じる長押し機能はクライアント エリアと同様に復活させました。
フォルダー表示ウィンドウがアクティブになった時の位置サイズの確認は本当に必要と思われる時だけに 絞り 無駄な確認はしない様にしました。同時に左上のアイコンの所を左クリックした 時には 記録に無い時でも 無条件に現在の位置サイズの記録をする様にしました。 此の為 .-_4 は除外する は Shift キーとの排他的な反転した動作はやめました。
2019/04/30 Ver 3.280
可能性の無い 現在は使用されていないクラスの確認は省いて無駄を無くしました。
ボタンに移動 のコードを変えて若干効率を良く間違いの少ない方向に振りました。
2019/05/25 Ver 3.300
ボタンに移動 は対象のウィンドウが作成された時には ある程度待って相手のウィンドウが落ち着いて から判断をする様にして取り違いを少なくしました。
同じフォルダー表示から連続してフォルダーを開けると 半幅調整が常に同じ所に移動させてしまうのを 避けて 順序だって移動する様にしました。
2019/07/20 Ver 3.330
背景長押し は マウスボタンが 画面の背景 タスクバー上で押されて 新たにそれらが アクティブになった 時には 動いても認める事にして使いやすくしました。
フォルダー表示のタスクバー上での左クリックでの長押しは フォルダー表示の左 1/3 だけにして不用意な クローズを無くすために 位置を意識して使用できる様にしました。同時に フォルダー表示の クライアントエリアでは 長押し機能は 無しにして不用意なクローズや メニュー表示が が起きない様にしました。
後 内部的な定数を変えた時に変え忘れた所があって 開を詳細 開を大きく が効かなくなっていたのを 修正しました。
2019/09/25 Ver 3.400
背景長押し の状況が解る様に ツールティップ擬きを出すための設定 オプションの 状況 Info メニューを 付加し コマンドラインも 此に対応した /I を増やしました。
内部的な 時間待期は全てタイマー割り込みでする事にして タイミングの為に自分が Sleep してその期間 反応が無くなるのを無くし より 多くのメッセージに 迅速に対処できる様にしました。
背景長押し の 画面の背景 タスクバー上で押されて 新たにそれらが アクティブになった時の 動いても 認める機能をより確実に効く様にしました。又 メニューを出す時には出来るだけオリジナルメニューと バッティングしない様にしました。
後 MS C++ の オプティマイザーのバグから出てしまう不具合が出ていたので 此を避けるコードにしました。
2019/11/30 Ver 3.450
通常は無い CD や リムーバルメディア 等のドライブは記憶しないようにする 排除ドライブ のオプションを 入れました。
記憶メモリー削除と新たにメモリーした時の認識をしやすい様にツールチップ擬きを増やしました。
背景長押し が有効になっていないと 場合によっては デスクトップの状況が刷新されず不具合が出てしまう 可能性を排除しました。
待期する回数が待期している数によっては不正確になってしまう事が有るのを修正しました。
2020/01/05 Ver 3.480
状況 InfoTip は 背景長押し とは関係なく独立させて InfoTip が出る状況を増やし 又 消去も 時間で消去する 事も採用しました。
自分のメニューが出ている時の反応を良くし 重複したメッセージループの扱い個数を増やし独立性を 上げました。
2020/02/20 Ver 3.500
半幅調整 が右下の方から始まるといつまで経っても右下の方に重なりオーバーラップが解消されずに使いにくい ので 画面からはみ出る時には左上にセットする様にしてオーバーラップしにくい位置にセットする事にしました。
コマンドラインからでしかセット出来なかった 排除ドライブと 既定のサイズをセット出来る様にメニューの 長押し機能を付けて 設定ダイアログを出す事にしました。
此と同時に ○個閉じる メニューを表示している 全てのフォルダーを纏めて ○個メモリー ○個 クリヤー の機能 にも振り分けました。
背景長押しの機能は 押していると Tip を出し この間に ボタンを放すと実行し さらに押し続けると Tip が 消えキャンセルが出来る様ににしました。
何らかのエラーでシステムがリセットされた時とかにタイマーが失われて反応が無くなってしまうのを 無くし安全性を高めました。
後 不用意に メモリーポジション が出てしまうのを防止し 細かな不具合 無駄を無くしています。
2020/03/20 Ver 3.600
排除ドライブと 既定のサイズをセット出来るダイアログを出せる様になったので特に コマンドラインで指定する 必要も無く 必ず フォルダー位置などを記憶した CabwcPos.pkg は読まなくてはならないので 設定は 全て 此の CabwcPos.pkg の一部として保存する事にして コマンドラインでの 設定の指定は 全て取りやめ 使い かってを良くシンプルにしました。
したがって初めて此の Ver 3.600 を立ち上げた時には 妥当だと思われる 設定になっているので自分でメニューを 出して再設定して下さい。
以前から 記憶していた フォルダー位置などを記憶したデータは最初の一個を除き利用できます。 ( 先頭の一カ所 32 bytes に設定を埋め込みました。)
メッセージボックスや設定ダイアログが関連した位置に開く様にし タイトルバーにアイコンを表示するように しました。
背景長押しの 閉じるの文言を変え 又 インフォチップが消えるタイミングも違和感の無いものにしました。 既定のサイス ダイアログが 0 ( 無し ) を認めないのを修正しました。
2020/04/30 Ver 3.620
終了する時の 閉じて終了 の動作で 終了時に Control キーが押されていると 此と逆の動作 は 右クリックに 変えました。
立ち上がる時のタスクトレイに表示しない扱いをストレートで無駄の無いものにしました。
2020/07/20 Ver 3.700
マルチモニター環境にも対応してフォルダー表示位置をどのモニターでも記憶できる様にしました。 同時に表示位置の整合性を判断する基準も以前より実際の表示位置との乖離を判断できる様になった ので あまりに異常な記憶位置はその場で消去して記憶メモリーの無駄が出ない様にしました。
先に立ち上がっている CabwcPos にメニューを出さすのは コマンドライン /M を入れるか 立ち上げる 時に Shift キーを押しているかの選択にして二重起動時の余分な確認は無い方向にしました。
2020/08/25 Ver 3.800
IME 変換をしていない時には デスクトップの有る言語バーをATOK のパレットの様に デスクトップから無くす 機能 IME Bar を消す オプションを付加しました。此で ATOK パレットを表示しなくて良くなった ので ATOK でも テキストサービスを使用する に チェックを付ける事が出来る様になりました。
自分自身が IME を使用する事は無いので この関連はプロセスから排除する事にして常駐量を減らしました。
2020/10/15 Ver 3.820
コントロールパネル系の操作 コントパネル を有効にしていても 違和感を無くす為 半幅調整 既定のサイズ は 動作から外すようにしました。同時に コントパネル にチェックが無くても フォルダー表示ウィンドウ ( エクスプローラー )にカウントしてしまうバグを修正し コントロールパネル周りの扱いの整合性を 調整しました。
フォルダー表示(エクスプローラー)ウィンドウの数を確認しないで動作するパスが有ったので修正しました。
2020/12/10 Ver 3.900
背景クリックの時の動作を Shift キーの同時押しに加えて 背景がクリックされてから 2秒間は Shift キーと 同じ機能にしました。又 此の切り替えで 背景長押し が有効な時には 全てを閉じる/アクト設定メニュー と 新設 した 全てメモリー/全てイレース の動作を 切り替える様にしました。
右クリックでの背景長押しの時に キャンセルした時にオリジナルの右クリックメニューが出来るだけ出ない 様にしました。
2020/12/30 Ver 3.940
CabinetWClass の処理が IME Bar を隠すの動作に引っ張られて 遅れてしまう事が有るので IME Bar の操作は 確実に CabinetWClass の処理が終わってからする様にしました。
此の為 初めて開いた CabinetWClass の処理中は IME Bar の表示がちらつく事が有るかも知れません。 又 開いた後のウィンドウの IME Bar の表示確認のモニターインターバルを長くして負荷を少しでも 減少させました。
背景長押し が有効な時に全てを閉じる/アクト設定メニュー と 新設した 全てメモリー/全てイレース の 動作を 切り替える時間を短縮しました。
2021/02/10 Ver 4.000
背景長押し が有効な時に 長く押して時間が過ぎた時には キャンセル のチップを出す様に。又 全てを閉じる /アクト設定メニュー と 全てメモリー/全てイレース の動作切り替え時間を 0.75秒に 短縮して 意図しない時に 切り替わらない様にしました。
背景 の Original メニュー や 左上アイコンのクリック等で出るメニューの抑制もより確実な方法に変えました。
内部メッセージの保持用のバッファを増やしてポストメッセージの実行抜けを無くし確実にしました。
IME Bar を隠す の機能は 相手のウィンドウの 種類や 状態を確認して早すぎる IME Bar の コントロール 無駄な メッセージのやり取りを少なくしました。
後 各スクリーンのサイズを入れ忘れていて 設定ダイアログの既定のサイズが跳ねられてしまうバグを修正しました。
2021/03/25 Ver 4.040
メニューの バージョンの右クリックは 此のテキスト CabwcPos.txt が同じフォルダーに有れば 此を 表示する事にしました。 同時に メニューの バージョン を選択した時に 右テキスト表示 終了を選択した時に 右;残して閉じる の 説明 チップを表示する事にしました。
システムをシャットダウンする時の設定がマウスボタンの使用の仕方によって場合によっては影響を受けて しまう事を排除しました。
今回限りの時に 設定を書き残さない不具合を修正しました。
2021/05/30 Ver 4.100
.-_4は除外する のオプションは 排除ドライブでカバー出来る事が多く処理も手間がかかるのでやめにしました。
言語バー Hide 機能を停止している時には必ず 言語バー を表示する様にしました。此と同時に 新たな オプション  IME ON OFF を表示する └IME Info. を新設しました。
自身のフォームでのチップが他のプログラムに影響を与えない位置とスタイルにしました。
画面背景 ( Progman / タスクバー ) がクリックされて 0.75sec 以内の再度のクリック動作は意図しない 動作になりやすいので Shift 同時押しに変えて Shift + 左ボタンでは 全て oo個メモリー Shift +右ボタンでは  全て oo個イレースに変えました。
2021/08/05 Ver 4.120
マウスボタンのチャッタリングの防止コードを入れて SW の チャッタリング が有っても 長押しの機能が 確実に働く様にしました。
2021/11/20 Ver 4.160
チャッタリングの防止コードの作りが悪く 内部プログラムで マウスイベントを出した時に此に掛かって 動作をしない事が あるのを無くしました。
メニューの出し方によってはアクセレレーターキーが効かないのを修正し キーによってメニューを決定した時の余分なキー出力を 押さえる様にしました。
Windows 11 になって デスクトップの背景の様子が変わったのでこれに対応しました。同時に デスクトップ アイテムを 列挙するコードを見直して 3/4 ぐらいの時間で終了する様になりました。
2022/01/30 Ver 4.200
チャッタリングの防止コードを新たな発想の物に改善をして より確実に 余分な案内フラッグも出ない様にしました。
ダイアログを出した時の 動作の安定性を考えて その時には 新規ウィンドウ対応動作はしない事にしました。
メモリーポジション インフォの動作を改善しました。
全体的なメッセージのやり取りを ウィンドウポストとスレッドポストをきちっと差別して安全性を高めました。
必要以上の文字列リソースの扱いはやめて直に文字列を持つ事にして全体のサイズを小さくしました。
2022/05/15 Ver 4.220
スタート時の確認を確実にして途中での確認の無駄を無くしました。
Loop の Try 回数と ウィンドウハンドルを取り違えるかも知れないパスを無くしました。
チャッタリングの防止コードをより効率の良い物として 待機時間も短く数の制限も無いものに変えました。
2022/07/05 Ver 4.300
ウィンドウポストのメッセージを貯める所の効率を良くしました。又 IME Bar を隠す作動メッセージは直に 廻す事にして 効率と動作反応を良くしました。
新たな機能 スリープ防止を付けました。
2022/08/05 Ver 4.320
新たな機能 MsgBox 移動 を付けました。
2022/09/05 Ver 4.360
OperationStatusWindow の移動は MsgBox 移動 の方に切り替えて 関連するフォルダー教示ウィンドウの 上に 移動する様にして移動位置の違和感を無くしました。
マルチモニター時の Global 変数の独立性を上げて 被りの可能性を無くしました。
半幅調整 の経歴を何個か残す事にして途中での途切れを減少させました。同時に 半幅調整 を始める ウィンドウを指定出来る機能を付加しました。
IME Bar を隠す 設定で 終了する時には 出来るだけ IME Bar を表示してから終了する様にしました。
2022/10/05 Ver 4.400
背景長押しで マウスが動いてキャンセルされた時には "Moved" のチップを出す事にしました。
IME Bar を隠す が外れた時と自分が終了する時 には 言語バー を表示して終わる様にしました。
MsgBox 移動 のベース候補経歴を増やし 自分自身は外し空振りを減少させました。 同時に OperationStatusWindow の移動は ターゲットを絞り関連しない物への移動を無くしました。
背景の右バタン長押しが出来るだけ背景の右クリックメニューと被らないタイミングにしました。
2022/11/05 Ver 4.440
Windows 11 で新に開かれたウィンドウの角丸をさせないオプション 角丸 なし ( 小さな角丸 ) を 加えました。
Windows 11 のタブファイルエクスプローラーに対応しました。
設定を記憶するデータ構造を若干変えました 規定サイズの H: の値が 0 になっているので 再設定して下さい。
2022/12/05 Ver 4.460
角丸 なし ( 小さな角丸 ) が Windows 11 でもチェックが外れてしまうのを修正しました。
MsgBox 移動 が 新に出現したウィンドウの出した物だと 関連の有るウィンドウが有るのに変な所に 移動してしまう事を少なくしました。
記憶していない フォルダーウィンドウ をずらすのが Windows 11 のタブエクスプローラーでは 足りないので 重ならない様にずらしを大きくしました。
タスクを列挙するのを Windows 11 により最適化しました。
メニューの コントパネル チェック アンチェック 動作の整合性のない所を修正しました。
マウスの左クリックで動作する機能の後に オリジナルのメニューが出る事を確実に押さえる コードを入れて 余分なメニューが残らない様にしました。
2023/01/05 Ver 4.480
新しく開かれて表示される ファイルエクスプローラーがタイミングによっては フォアグラウンド ウィンドウになれない物が 特に Windows 11 に 出てきてしまっているので 此を 捉えて アシストを 入れて対処し出来るだけ表示の違和感が出ない様にしました。( フォアグラウンドウィンドウが 取れなくて タスクバー上で フラッシュをしている物です。)
何らかの理由でファイルエクスプローラーが TopMost ウィンドウにセットされていると 新しく 開かれる フォルダー表示ウィンドウの早期発見が阻害されてしまう事を修正しました。
2023/01/25 Ver 4.500
タイミングを取る為の自分のスレッドを止める待期関数の使用をやめて常にメッセージがすぐに回る様にして 反応を良くしました。
スレッドを止めて 判断するのをやめた事で同じ事をする所を共通化出来たのでサイズも若干減少しました。
ファイルエクスプローラーが TopMost ウィンドウにセットされていると その他のファイルエクスプローラーの タイトルバー長押しでの数が違ってしまう事を修正しました。
立ち上げられて 2秒 程度の間に 画面が変わったり マウスボタンが押されたりすると 最初の基準取得が 妨げられてしまう事が有るのを修正しました。
コードを見直し 固めた所と 効率が良くなった所が出きて全体的ににはすっきりした物になりました。
2023/03/10 Ver 4.520
自分のメニューを出す所 他のメニューを押さえる所の 判断数を1つの変数に統一して 無駄を無くし余分な 確認の重複を無くしました。
外から呼ばれてメニューを出す定数 タスクトレイからのクリックでの定数 背景の長押しクリックでの 定数を 調整して無駄な動きをしない様にしました。
2023/05/05 Ver 4.540
新に連続してフォルダーが開かれた時に フォルダー数の数がリセットできない事から来る 半幅調整 等の 機能が効かない事が出るのを修正しました。
フォルダーが全く開いていない時に新に開かれる物が記憶されていない時に 半幅調整 が有効で 規定サイズ が 設定して有れば スクリーンのの左上から 各々 規定サイズの 1/3 の位置に開く事にしました。
背景長押しでマウスカーソルが動いたらキャンセルの時だけ "Moved" フラグを出す様にしました。
又 要らない 余分な フラグ はすぐに消す様にしました。
2023/06/20 Ver 4.600
完全な Portable 動作をさせる為に 自分と同じ所に CabwcPos.pkg が有った時には 此を優先的に使用 して User Folder には書き込まない様にしました。
自分のパスと コマンドラインを取得する所を統一して若干効率を良くし 値の再確認も入れて安全性を 高めました。
新に開かれたウィンドウの制限フィルターが厳しすぎて反応しないウィンドウが有るのを無くしました。
同時に 関連の無いウィンドウは早期に排除してメッセージの搬出の無駄を無くしました。
ボタンに移動 の候補範囲をメニューが有っても条件によってはする様に若干広げました。
角丸なし 小さな角丸 の機能は出来るだけ全ての(自分自身にも)ウィンドウに効く様にしました。
2023/09/20 Ver 4.640
最初から対応候補でないウィンドウ( 不可視等 )は存在確認ループを外す様にして無駄を省きました。
各種ダイアログ等を移動させる時に出来るだけ再描画をしない様なメッセージを送る事にして余分な チラチラが出ない様にしました。
現存フォルダーを 纏めて閉じる時に 新たなフォルダーオープンとのフォアグランドとのメッセージの 取得と被って此処の動作が不安定になる事を避けるためこの期間はガードをかけるようにして安定して 動作するようにしました。
新しく開かれるフォルダーウィンドウの感知も余分なトップモーストウィンドウが多数有ってもより正確に 認識出来るコードにしました。
メモリーポジション イレースメモリー の動作が おかしい時が有るのを修正しました。
2023/10/20 Ver 4.660
Windows 11 の Update で フォルダーウィンドウを開く速度が大分遅くなったので此が落ち着く待ち時間に 余裕を持たせました。
フォルダーウィンドウの構造がだいぶ変わって カーソル移動 のオプションが効かなくなったので フォルダー 内容を表示している子ウィンドウのサイズ矩形を直に利用する事にしてタイミングも此のサイズが落ち着くのに 合わせました。( 此の為 カーソル移動 は Windows 7 以降の対応となりました。)
ボタンに移動 も他の機能が終了して移動するようにして 操作重複からの移動間違いをなくしました。
2023/11/25 Ver 4.680
フォアグランドになれなくて開かれたフォルダーウィンドウは認識出来なくて開かれた事にならず 後で おかしな移動等が起きる事がない様に機会を見て現存する物を確認する様にしました。
フォルダーウィンドウ上のマウスボタンのクリックとタイミングよってはガード変数が被ってしまい 状況 InfoTip が不用意に残ってしまうの事が出てしまうのを無くしました。
2023/12/25 Ver 4.700
MsgBox 移動 機能が 何の関わりも無く出る MessageBox を意味の無い ウィンドウと 関連付けて とんでもない所に持って行かない様に Owner 若しくは 出した物の確認をする様にしました。
カーソル移動 の判断を タイトルバーや ナビゲーション ウィンドウ 等の表示の有無での高さ方向の 自由度を上げました。
2024/02/15 Ver 4.720
制限事項にも書いて有る 以前のバージョンの Microsoft IME を使う を ON にしなくても言語バーを出す ように プログラム上でシステム言語バーを有効にして立ち上げる様にしてより確実に 言語バー の ON OFF 出来る様にしました。
2024/03/15 Ver 4.800
同時に押しているキーによってや 開くタイミングによっては フォアグランドになれない事の有る  プログラムのフォアグランドへのアシストをする機能を入れました。
マウスボタンの押される場所によってはシステムのフォアグランドウィンドウの切り替えが認識出来ずに マウスボタンを押している時間が計れずにタイミングを失ってしまう事が有るのを修正しました。
デスクトップに有る 各ウィンドウを列挙で確認するタイミングを変えて取り残しが出来るだけ出ない 様にしました。
立ち上がる時に 若しくは 左マウスクリックで アクティブになる時に Control or Shift キー を押して 角丸 なし,小さな角丸.大きな角丸( Default ) を一時的に切り替える機能を付けました。
機能が多くなって殆ど止める事はなくなり意味が無くなった 一時停止 は削除しました。此の為 設定項目 関連が若干変わり タスクトレイ と 角丸無し のメニュー設定を確認して下さい。
Control Shift キーを押して 立ち上げると先に起動している CabwcPos にメニューを出させる様にしました。
タスクトレイアイコンが 表示されていない時には 背景長押しの チェックは外せない様にして自分自身で自分が  コントロール出来なくなる事が無い様にしました。
設定の アイテムが多くなったので 設定メニューが出ている時に タスクトレイ より上部の メニューは  スペース キーを押す事で チェックアンチェックを メニュー上で切り替えられる様にしました。
2024/03/20 Ver 4.810
変数の初期値の入れ忘れで 意味の無い内部メッセージが飛び交い 悪さをする可能性を無くしました。
2024/04/10 Ver 4.820
新しく開かれた フォルダーの検知とフォルダー名の認識のメッセージを整理して遅いネットワーク上の フォルダーを 開かれた時に見落としてしまう可能性を少なくしました。
新しく開かれた フォルダー の変化が無くても 可視化したら 待期を終わる様にして安全性を高めました。
フォアグランドになれない事の有る プログラムのフォアグランドへのアシストをする機能がメニューとの 相性が悪かったので調整しました。
エクスプローラーのドラッグ ドロップ の間は 意識的に フォアグランドウィンドウを出さない様なので 無理に フォアグランドへのアシストをする機能はしない様にしました。

 最新版 04/10 2024 Ver 4.820 Size 30 kb CabwcPos のダウンロード
−戻る−