裏目小僧の部屋

Win32SysCol

目的

windowsのSysColorを設定する事
レジストリは変更しないのでその都度設定する目的です
設定はファイルの内容を編集してもよいし
クリップボード経由で設定するという事も出来ます
  • 色については https://www.colordic.org/ とか参考に #->$に置き換えて設定して下さい
  • GUIアプリではありませんがコンソール出力もありません

ダウンロードとインストール

実行ファイルをどこかに置けば使えます。

使い方

  • 実行ファイル名を変更しても動作はします。
  • 引数はコンソールからやバッチやスクリプト、ショートカット あるいはDrag&Drop等で与える事になります
 -wFname または -w Fname とあれば 現在のSysColorをFnameに書きだす
 -w のみの時 引数無しで読ませるファイルに書きだす

 存在するファイル名であれば  それを読んで   SysColorとして設定する
    CTRLキーを押していないなら  実行ファイルと同じフォルダに
    Win32SysColInital.ini があれば読みSysColorに設定し終了
    このファイルが無ければ
   クリップボードに設定値があるならそれをSysColorに設定し終了
   クリップボードの値が1か所でもエラーになるなら
    SysColorを読みクリップボードにテキストとして書きだす
    その時 Shiftキーが押されているなら SysColor側には色のビット反転を行う
    ただしwin10でもOSで設定可能な COLOR_DESKTOPは反転しません
    またwin10で使えなくなったシステムカラーも反転しません。
    使いたいアプリが反応するかどうか確認用の機能です。
このプログラムはコンソールも開きません。コンソールに出力もしません。
代わりにクリップボードでエディター類を使って設定する事も出来るようにという目的です
  • クリップボード操作停止方法
-wで書いたファイルや クリップボードの先頭行に書かれているファイル名
  実行ファイル名+Inital.ini
 が存在すればクリップボード操作はしません。
 ただしCTRLキーを起動時に押していれば ファイルが無いとしてクリップボード操作します
  • 色の指定
   24bit値を10進数か 16進数で行う。
   一部の色はclBlack clRed のようにラベルが付いてる
   先頭文字が~の時は24bitのビット反転 つまり補色になります。
   元の色コードに加算すれば白色になる関係の色になるわけです
  • SysColorBackUp
設定ファイルやクリップボードに
   SysColorBackUp = ファイル名 #というコードがあれば
   現在のSysColorを指定ファイルに書きだします。
   その行を解釈した時に書きだされるので それ以前にエラーがあれば処理されず
   それ以後にエラーがあっても既に書きだされています。
   ですから先頭に入れるべきでしょう。
   SysColorへの書き出しは全部のエラーが無い時に行われますから
   新しく設定する以前の値が書かれます。
  • 注意:
    • クリップボード読み込み時はエラーは報告しません
    • ファイル読み込み時はエラーなら不親切なダイアログが出ます
    • このツールはsysColorを設定するだけでありレジストリを書き換えません。ですから次にwindowsを起動した時には元の色に戻ります。
    • 常に設定したいならwindowsの起動時にパラメータ付きで呼び出す等の工夫をして下さい
    • sysColorを設定してもアプリ側が対応していなければ変わりません。
    • win10以後 このツールで表示される先頭の10個以後は反応しません。

つまり、win10以後はアプリ事に使える範囲で調整しないといけない感じになっています

ソースファイルについて

実行ファイルもソースも自由に使って下さい。連絡も不要です。改変して業務等で使うのも自由ですが、[日本語以外に翻訳禁止]は とりあえずお願いします。

実行サイズが小さくなるようにWindowsAPIを使っているので文字コードはANSI ですからLazarusでは文字化けを止めるのに苦労するでしょう。サイズが大きくなるのを我慢してLazarusコンポーネントを使ってGUIアプリに作り直した方が楽かもしれませんね。といってもGUIを付けても何か便利になるという事もないでしょうけど。

設定ファイル/クリップボードに書かれるデーター例

#より右側はコメントです$は16進数を示しますコメントが #! となっているのはWin10以後未定義となったりでアプリが反応しないと思われるものです。仮想マシンで昔のOSを使ってるなら意味はあるでしょうから残しています

000001 COLOR_WINDOW            =~clWhite        # 5ウィンドウの背景 関連付けられている前景色はCOLOR_WINDOWTEXTされ、COLOR_HOTLITE
000002 COLOR_WINDOWTEXT        =~clBlack        # 8ウィンドウ内のテキスト 関連付けられている背景色がCOLOR_WINDOW
000003 COLOR_HIGHLIGHT         =~$D77800        #13コントロールで選択されている項目 関連付けられている前景色がCOLOR_HIGHLIGHTTEXT
000004 COLOR_HIGHLIGHTTEXT     =~clWhite        #14コントロールで選択されている項目のテキスト 関連付けられている背景色がCOLOR_HIGHLIGHT
000005 COLOR_3DFACE            =~$F0F0F0        #153 Dとダイアログ ボックスの背景の面の色
000006 COLOR_GRAYTEXT          =~$6D6D6D        #17灰色:無効のテキスト 現在のディスプレイ ドライバーが単色の灰色をサポートしていない場合、この色は 0 に設定
000007 COLOR_BTNTEXT           =~clBlack        #18プッシュ ボタン上のテキスト 関連付けられている背景色がCOLOR_BTNFACE
000008 COLOR_HOTLIGHT          =~$CC6600        #26ハイパーリンクまたはホット トラックアイテムの色 関連付けられている背景色がCOLOR_WINDOW
000009 COLOR_CAPTIONTEXT       =~clBlack        # 9キャプション、サイズ ボックス、スクロール バーの矢印ボックス内のテキスト 関連付けられている背景色がCOLOR_ACTIVECAPTION
000010 COLOR_ACTIVEBORDER      =$B4B4B4        #!10    アクティブなウィンドウの境界線
000011 COLOR_INACTIVEBORDER    =$FCF7F4        #!11    非アクティブなウィンドウの境界線
000012 COLOR_APPWORKSPACE      =$ABABAB        #!12    複数のドキュメント インターフェイスMDI) アプリケーションの背景色
000013 COLOR_BTNFACE           =$F0F0F0        #!15  
000014 COLOR_INACTIVECAPTIONTEXT=clBlack       #!19    非アクティブなキャプションのテキストの色 関連付けられている背景色がCOLOR_INACTIVECAPTION
000015 COLOR_INFOTEXT          =clBlack        #!23    ヒント コントロールのテキストの色 関連付けられている背景色がCOLOR_INFOBK
000016 COLOR_INFOBK            =$E1FFFF        #!24    ヒント コントロールの背景色 関連付けられている前景色がCOLOR_INFOTEXT
000017 COLOR_3DSHADOW          =$A0A0A0        #!16    3Dの影の色 光源から離れたエッジの場合
000018 COLOR_3DHILIGHT         =clWhite        #!20    3Dの強調表示の色 光源に面するエッジの場合
000019 COLOR_3DDKSHADOW        =$696969        #!21    3Dの濃い影
000020 COLOR_3DLIGHT           =$E3E3E3        #!22    3Dの明るい色 光源に面するエッジの場合
000021 COLOR_DESKTOP           =clBlack        #! 1 デスクトップ

ぼやき

Win10以後 32bitアプリの配色の変更が厄介になった。年取ってくると目が疲れやすくなる。少しでも白い画面があるとすぐに目がぼやけてしまう。**だから配色を変更したいのに Win10/Win11で配色変更しても昔の32bitアプリは殆ど変化しない。

  • なにせsysColorを変更してくれてないのだから。
  • 個人用設定で変更してくれるのは OSCOLOR_DESKTOPだけじゃないのかな?
  • いやアプリには関係ないSysColorだから設定してくれてるのか?

だからsysColorを変更するツールを作る事にしたのだが

  • sysColorを変更してもタイトルバーとかいろんな場所がXPのころのようには反応しない!

代わりに角が丸くなってる。せめてダークテーマにしたらタイトルバーもダークになって欲しいものだ。

  • そういうわけでsysColorの設定だけではどうしようもない部分が出てくる
  • というかボタンとか背景色と文字色を同時に設定出来ないのだから見えない場所さえ出てくる
  • だから逆にテーマ設定でsysColorの設定をしなくなったのじゃないかと邪推する

そんなわけで

使うアプリ事に色設定変更しなくちゃいけないって感じだけど、これ以上は出来る事はマイクロソフトに文句言うくらいだね 昔のようにタイトルバーの色設定とかも出来るように戻せとかさ

プライバシーポリシー本文は日本語以外に翻訳禁止