SetSysColors

機能
システムカラーを設定する
Declare Function SetSysColors Lib "user32.dll" _
(ByVal cLelements As Long, lpElements As Any, lpRgbValues As Any) As Long
Declare Function SetSysColors Lib "user32.dll" _
(ByVal cLelements As Integer, lpElements As Integer, lpRgbValues As Integer) As Integer

BOOL WINAPI SetSysColors(
int cElements,
CONST INT *lpaElements,
CONST COLORREF *lpaRgbValues
);
引数
cLelements

変更するカラーの数(lpElementsの配列の要素数)
lpElements
システムカラーの部位を示す数値配列
lpRgbValues
lpElementsの配列に対応して設定するカラー値の配列
戻り値
成功したとき            0以外
失敗したとき            0
備考
「システムカラー」とは、メニューバーの色やキャプションバーの色などである。
この関数を実行するとWindowsはすべてのウィンドウにWM_SYSCOLORCHANGEメッセージを通知し
カラーの変更をうながす。変更内容は保存されない。
つまりWindowsをログオフしたり、再起動すれば元に戻る。
lpElementsの定数

COLOR_3DDKSHADOW = 21                              3D表示の暗い影色
COLOR_3DFRAME = 15                                 = COLOR_BTNFACE
COLOR_3DHIGHLIGHT = 20                             = COLOR_BTNHIGHCOLOR
COLOR_3DLIGHT = 22                                 3D表示の明るい色
COLOR_3DSHADOW = 16                                = COLOR_BTNSHADOW
COLOR_ACTIVEBORDER = 10                            アクティブウィンドウの境界線
COLOR_ACTIVECAPTION = 2                            同、キャプション
COLOR_APPWORKSPACE = 12                            MDIアプリケーションの背景色
COLOR_BACKGROUND = 1                               デスクトップの背景色
COLOR_BTNFACE = 15                                 コマンドボタンの表面色
COLOR_BTN_HIGHLIGHT = 20                           同、強調表示のときの色
COLOR_BTNSHADOW = 16                               コマンドボタンの影色
COLOR_BTNTEXT = 18                                 コマンドボタンの文字色
COLOR_CAPTIONTEXT = 9                              キャプションバーの文字色
COLOR_DESKTOP = 1                                  = COLOR_BACKGROUND
COLOR_GRANDIENTACTIVECAPTION = 27                  アルティブなタイトルバーのグラデーション色
COLOR_GRANDIENTINACTIVECAPTION = 28                非アクティブなタイトルバーのグラデーション色
COLOR_GRAYTEXT = 17                                グレー表示の文字色
COLOR_HIGHLIGHT = 13                               選択された項目の背景色
COLOR_HIGHLIGHTTEXT = 14                           同、文字色
COLOR_HOTLIGHT = 26                                ホットトラックの文字色(Win98以降)
COLOR_INACTIVEBORDER = 11                          非アクティブウィンドウの境界線色
COLOR_INACTIVECAPTIPON = 3                         同、タイトルバーの背景色
COLOR_INACTIVECAPTIONTEXT = 19                     同、文字色
COLOR_INFOBK = 24                                  ツールチップの背景色
COLOR_INFOTEXT = 23                                ツールチップの文字色
COLOR_MENU = 4                                     メニューの背景色
COLOR_MENUTEXT = 7                                 同、文字色
COLOR_SCROLLBAR = 0                                スクロールバーの色
COLOR_WINDOW = 5                                   ウィンドウの背景色
COLOR_WINDOWFRAME = 6                              同、枠色
COLOR_WINDOWTEXT = 8                               同、文字色
サンプル

ダウンロード(SetSysColors.lzh 2.33KB)

Dim SaveColor(3) As Long, SaveColorIndex(3) As Long
Dim ChangeColor(3) As Long

Private Sub Form_Activate() 'システムカラーを変更する Call SetSysColors(4, SaveColorIndex(0), ChangeColor(0)) End Sub
Private Sub Form_Deactivate() 'システムカラーを変更する Call SetSysColors(4, SaveColorIndex(0), ChangeColor(0)) End Sub
Private Sub Form_Load() '変更したいシステムカラーを決定する SaveColorIndex(0) = COLOR_GRANDIENTACTIVECAPTION SaveColorIndex(1) = COLOR_BTNTEXT SaveColorIndex(2) = COLOR_MENU SaveColorIndex(3) = COLOR_CAPTIONTEXT '現在のシステムカラーを取得する For a = 0 To 3 SaveColor(a) = GetSysColor(SaveColorIndex(a)) Next '変更したい色を決定する ChangeColor(0) = &H90EE90 ChangeColor(1) = &HFF0000 ChangeColor(2) = &HADD8E6 ChangeColor(3) = vbYellow 'システムカラーを変更する Call SetSysColors(4, SaveColorIndex(0), ChangeColor(0)) End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) '変更したシステムカラーを元に戻す Call SetSysColors(4, SaveColorIndex(0), SaveColor(0)) End Sub
Private Sub Form_Unload(Cancel As Integer) '変更したシステムカラーを元に戻す Call SetSysColors(4, SaveColorIndex(0), SaveColor(0)) End Sub