Skip to content

Commit

Permalink
Update DMTB.nim
Browse files Browse the repository at this point in the history
  • Loading branch information
Aetopia committed Jan 1, 2023
1 parent 230479d commit cb1e02a
Showing 1 changed file with 5 additions and 10 deletions.
15 changes: 5 additions & 10 deletions src/DMTB.nim
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,10 @@ if isAdmin():
writeFile("Blacklist.txt", "")

var
DWMWA_USE_IMMERSIVE_DARK_MODE: DWORD = 20
osvi: OSVERSIONINFO
DarkMode = true
msg: MSG
blacklist: seq[string]

GetVersionEx(&osvi)
if (osvi.dwBuildNumber >= 17763):
DWMWA_USE_IMMERSIVE_DARK_MODE = 19

proc IsProcessInBlacklist(hwnd: HWND): bool =
var pid: DWORD
GetWindowThreadProcessId(hwnd, &pid)
Expand All @@ -43,21 +37,22 @@ proc WinEventProc(hWinEventHook: HWINEVENTHOOK,
return
if IsProcessInBlacklist(hwnd):
return
DwmSetWindowAttribute(hwnd, DWMWA_USE_IMMERSIVE_DARK_MODE, &DarkMode, 4)
PostMessage(hwnd, WM_THEMECHANGED, 0, 0)
if DwmSetWindowAttribute(hwnd, 19, &DarkMode, 4) != S_OK:
DwmSetWindowAttribute(hwnd, 20, &DarkMode, 4)

proc EnumWindowsProc(hwnd: HWND, lParam: LPARAM): WINBOOL {.stdcall.} =
if IsProcessInBlacklist(hwnd):
return true
DwmSetWindowAttribute(hwnd, DWMWA_USE_IMMERSIVE_DARK_MODE, &DarkMode, 4)
PostMessage(hwnd, WM_THEMECHANGED, 0, 0)
if DwmSetWindowAttribute(hwnd, 19, &DarkMode, 4) != S_OK:
DwmSetWindowAttribute(hwnd, 20, &DarkMode, 4)
return true

if not isMainModule:
quit(0)
if not isAdmin():
ShellExecute(0, "runas", getAppFilename(), nil, nil, 5)
quit(0)

blacklist = readFile("Blacklist.txt").splitLines()
EnumWindows(EnumWindowsProc, 0)
SetWinEventHook(EVENT_OBJECT_CREATE, EVENT_OBJECT_CREATE, 0, WinEventProc, 0, 0, WINEVENT_OUTOFCONTEXT)
Expand Down

0 comments on commit cb1e02a

Please sign in to comment.