ダーク モード (Dark mode)

ライト モードに設定されていることは、レジストリの[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize]で、[AppsUseLightTheme]が1に設定されていることで確認できます。c# - Is it possible to detect Windows dark mode on winforms application? - Stack Overflow

Windows Formのタイトルバー

Formアプリケーションでは、DwmSetWindowAttribute()関数でDWMWINDOWATTRIBUTEDWMWA_USE_IMMERSIVE_DARK_MODEでTRUEを指定することでダークモードを適用できます。

HRESULT DwmSetWindowAttribute(
       HWND    hwnd,
       DWORD   dwAttribute,
  [in] LPCVOID pvAttribute,
       DWORD   cbAttribute
);
DwmSetWindowAttribute function (dwmapi.h) - Win32 apps | Microsoft Learn


Windows 11 21H2

C#では次のように呼び出します。

[DllImport("dwmapi.dll")]
private static extern int DwmSetWindowAttribute(HandleRef hwnd, uint attribute, ref int attributeValue, uint attributeValueSize);
const uint DWMWA_USE_IMMERSIVE_DARK_MODE = 20;

int preference = Convert.ToInt32(true);
int result = DwmSetWindowAttribute(new HandleRef(this, this.Handle), DWMWA_USE_IMMERSIVE_DARK_MODE, ref preference, sizeof(uint));

指定のウィンドウのハンドルが無効だと、0x80070006 (ERROR_INVALID_HANDLE) が返されます。

アクセントカラーの設定で[タイトル バーとウィンドウの境界線にアクセント カラーを表示する (Show accent color on title bars and windows borders)]が有効になっていると、その設定が優先されダークモードの指定は無視されます。その状態であってもDwmSetWindowAttribute()はS_OKを返すため、戻り値でエラーを検出できません。

複数の技術系サイトから、まとめて検索