Repository navigation
OpenGlass DComp - Windhawk edition
·
7 commits
to main
since this release
// ==WindhawkMod==
// @id openglass-dcomp
// @name OpenGlass DComp - Windhawk edition
// @description Aero Glass for W10 1809 - W11 23H2
// @version 1.3
// @author Tech Stuff
// @github https://github.com/teknixstuff
// @homepage https://teknixstuff.com/
// @architecture x86-64
// @include dwm.exe
// @include winlogon.exe
// ==/WindhawkMod==
// ==WindhawkModReadme==
/*

# OpenGlass
A replica of the dead software glass8, also known as the upstream project of [DWMBlurGlass](https://github.com/Maplespe/DWMBlurGlass).
*/
// ==/WindhawkModReadme==
#include <errhandlingapi.h>
#include <libloaderapi.h>
#include <processenv.h>
#include <processthreadsapi.h>
#include <windhawk_api.h>
#include <windows.h>
HMODULE hOpenGlass;
BOOL Wh_ModInit() {
Wh_Log(L"Init");
WH_FIND_SYMBOL_OPTIONS symbolOptions;
symbolOptions.optionsSize = sizeof(symbolOptions);
symbolOptions.symbolServer = NULL;
WH_FIND_SYMBOL symbol;
HANDLE hSymbol;
Wh_Log(L"Getting udwm.dll symbol");
hSymbol = Wh_FindFirstSymbol(LoadLibrary(L"udwm.dll"), &symbolOptions, &symbol);
Wh_FindCloseSymbol(hSymbol);
Wh_Log(L"Getting dwmcore.dll symbol");
hSymbol = Wh_FindFirstSymbol(LoadLibrary(L"dwmcore.dll"), &symbolOptions, &symbol);
Wh_FindCloseSymbol(hSymbol);
Wh_Log(L"Loading OpenGlass");
hOpenGlass = LoadLibrary(L"C:\\programdata\\Windhawk\\Engine\\ModsWritable\\OpenGlassDComp3.dll");
if (!hOpenGlass) {
Wh_Log(L"Downloading OpenGlass");
const WH_URL_CONTENT* OpenGlassFile = Wh_GetUrlContent(L"https://github.com/teknixstuff/misc-files/releases/download/OpenGlass-DComp-Windhawk/OpenGlassDComp3.dll", NULL);
HANDLE hOpenGlassFile = CreateFile(L"C:\\programdata\\Windhawk\\Engine\\ModsWritable\\OpenGlassDComp3.dll", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
DWORD lpNumberOfBytesWritten;
WriteFile(hOpenGlassFile, OpenGlassFile->data, OpenGlassFile->length, &lpNumberOfBytesWritten, NULL);
CloseHandle(hOpenGlassFile);
Wh_FreeUrlContent(OpenGlassFile);
Wh_Log(L"Loading OpenGlass");
hOpenGlass = LoadLibrary(L"C:\\programdata\\Windhawk\\Engine\\ModsWritable\\OpenGlassDComp3.dll");
if (!hOpenGlass) {
Wh_Log(L"Could not load OpenGlass, error %X", GetLastError());
return FALSE;
}
}
if (!GetModuleHandle(L"dwm.exe")) {
Wh_Log(L"Starting OpenGlass host thread");
auto OpenGlassStartupService = GetProcAddress(hOpenGlass, "StartupService");
if (OpenGlassStartupService) {
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)OpenGlassStartupService, NULL, 0, NULL);
}
}
return TRUE;
}
// The mod is being unloaded, free all allocated resources.
void Wh_ModUninit() {
Wh_Log(L"Uninit");
if (!GetModuleHandle(L"dwm.exe")) {
Wh_Log(L"Stopping OpenGlass host thread");
auto OpenGlassShutdownService = GetProcAddress(hOpenGlass, "ShutdownService");
if (OpenGlassShutdownService) {
OpenGlassShutdownService();
}
}
FreeLibrary(hOpenGlass);
}