システムカラーを設定する
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
「システムカラー」とは、メニューバーの色やキャプションバーの色などである。lpElementsの定数
この関数を実行するとWindowsはすべてのウィンドウにWM_SYSCOLORCHANGEメッセージを通知し
カラーの変更をうながす。変更内容は保存されない。
つまりWindowsをログオフしたり、再起動すれば元に戻る。
サンプル
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