return FALSE;
}
-static bool GetWinMuteVersion(std::wstring& versNumber)
-{
- bool success = false;
- DWORD dummy;
- wchar_t szFileName[MAX_PATH];
- GetModuleFileName(nullptr, szFileName, sizeof(szFileName)/sizeof(szFileName[0]));
- const DWORD versSize = GetFileVersionInfoSizeEx(FILE_VER_GET_NEUTRAL, szFileName, &dummy);
- LPVOID versData = malloc(versSize);
- if (versData != nullptr) {
- if (GetFileVersionInfoExW(
- FILE_VER_GET_NEUTRAL,
- szFileName,
- 0,
- versSize,
- versData)) {
- VS_FIXEDFILEINFO *pvi;
- UINT pviLen = sizeof(*pvi);
- if (VerQueryValueW(
- versData,
- L"\\",
- reinterpret_cast<LPVOID*>(&pvi),
- &pviLen)) {
- wchar_t buf[50];
- StringCchPrintfW(
- buf,
- ARRAY_SIZE(buf),
- L"%d.%d.%d.%d",
- pvi->dwProductVersionMS >> 16,
- pvi->dwFileVersionMS & 0xFFFF,
- pvi->dwFileVersionLS >> 16,
- pvi->dwFileVersionLS & 0xFFFF);
- versNumber = buf;
- success = true;
- }
- }
- free(versData);
- }
- return success;
-}
-
INT_PTR CALLBACK AboutDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
AboutDlgData* dlgData =
LocalFree(lpMsgBuf);
}
}
+
+bool GetWinMuteVersion(std::wstring &versNumber)
+{
+ bool success = false;
+ DWORD dummy;
+ wchar_t szFileName[MAX_PATH];
+ GetModuleFileName(nullptr, szFileName, sizeof(szFileName) / sizeof(szFileName[0]));
+ const DWORD versSize = GetFileVersionInfoSizeEx(FILE_VER_GET_NEUTRAL, szFileName, &dummy);
+ LPVOID versData = malloc(versSize);
+ if (versData != nullptr) {
+ if (GetFileVersionInfoExW(
+ FILE_VER_GET_NEUTRAL,
+ szFileName,
+ 0,
+ versSize,
+ versData)) {
+ VS_FIXEDFILEINFO *pvi;
+ UINT pviLen = sizeof(*pvi);
+ if (VerQueryValueW(
+ versData,
+ L"\\",
+ reinterpret_cast<LPVOID *>(&pvi),
+ &pviLen)) {
+ wchar_t buf[50];
+ StringCchPrintfW(
+ buf,
+ ARRAY_SIZE(buf),
+ L"%d.%d.%d.%d",
+ pvi->dwProductVersionMS >> 16,
+ pvi->dwFileVersionMS & 0xFFFF,
+ pvi->dwFileVersionLS >> 16,
+ pvi->dwFileVersionLS & 0xFFFF);
+ versNumber = buf;
+ success = true;
+ }
+ }
+ free(versData);
+ }
+ return success;
+}
bool success = false;
DWORD regError = 0;
DWORD bufSize = 0;
+ WMLog &log = WMLog::GetInstance();
regError = RegQueryValueExW(hKey, subKey, nullptr, nullptr, nullptr, &bufSize);
if (regError != ERROR_SUCCESS) {
if (regError != ERROR_FILE_NOT_FOUND) {
- PrintWindowsError(L"RegQueryValueEx", regError);
+ PrintWindowsError(L"RegQueryValueExW", regError);
+ log.Write(L"[Registry] Failed to read key \"%s\".", subKey);
}
} else {
bufSize += 1; // Trailing '\0'
regError = RegQueryValueExW(hKey, subKey, nullptr, nullptr,
reinterpret_cast<LPBYTE>(buf), &bufSize);
if (regError != ERROR_SUCCESS) {
- PrintWindowsError(L"RegQueryValueEx", regError);
+ PrintWindowsError(L"RegQueryValueExW", regError);
+ log.Write(L"[Registry] Failed to query value for key \"%s\".", subKey);
} else {
success = true;
val = buf;
&size);
if (regError != ERROR_SUCCESS) {
if (regError != ERROR_FILE_NOT_FOUND) {
- PrintWindowsError(L"RegCreateKeyEx", regError);
+ PrintWindowsError(L"RegQueryValueExW", regError);
+ WMLog &log = WMLog::GetInstance();
+ log.Write(L"[Registry] Failed to query value for key \"%s\"", keyStr);
}
return GetDefaultSetting(key);
}
reinterpret_cast<BYTE*>(&value),
sizeof(DWORD));
if (regError != ERROR_SUCCESS) {
- PrintWindowsError(L"RegCreateKeyEx", regError);
+ PrintWindowsError(L"RegSetValueExW", regError);
return false;
}
#include "WinMute.h"
#include "WinAudio.h"
+
extern HINSTANCE hglobInstance;
extern INT_PTR CALLBACK AboutDlgProc(HWND, UINT, WPARAM, LPARAM);
extern INT_PTR CALLBACK SettingsDlgProc(HWND, UINT, WPARAM, LPARAM);
static int IsDarkMode(bool& isDarkMode)
{
+ WMLog &log = WMLog::GetInstance();
HKEY hKey;
int rc = 1;
//RegOpenCurrentUser
+ const std::wstring regKey =
+ L"Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize";
LSTATUS error = RegOpenKeyW(
HKEY_CURRENT_USER,
- L"Software\\Microsoft\\Windows\\CurrentVersion\\"
- L"Themes\\Personalize",
+ regKey.c_str(),
&hKey);
if (error != ERROR_SUCCESS) {
PrintWindowsError(L"RegOpenKey", error);
+ log.Write(L"[Registry] Failed to open registry key \"%s\"", regKey.c_str());
} else {
DWORD isLightTheme = 0;
DWORD bufSize = sizeof(isLightTheme);
reinterpret_cast<LPBYTE>(&isLightTheme),
&bufSize);
if (error != ERROR_SUCCESS) {
- PrintWindowsError(L"RegQueryValueEx", error);
+ log.Write(L"[Registry] Failed to query value for key \"SystemUsesLightTheme\"");
} else {
isDarkMode = !isLightTheme;
rc = 0;
WMLog& log = WMLog::GetInstance();
if (log.IsEnabled()) {
+ std::wstring versionNumber;
+ GetWinMuteVersion(versionNumber);
+ log.Write(L"Starting WinMute %s", versionNumber.c_str());
log.Write(L"Loading settings:");
log.Write(L"\tRestore volume: %s", settings_.QueryValue(SettingsKey::RESTORE_AUDIO) ? L"Yes" : L"No");
log.Write(L"\tMute on lock: %s", settings_.QueryValue(SettingsKey::MUTE_ON_LOCK) ? L"Yes" : L"No");
#include <comdef.h>
#include <wlanapi.h>
#include <Mmdeviceapi.h>
+#include <dwmapi.h>
#pragma warning(disable : 4201)
# include <endpointvolume.h>
#pragma warning(default : 4201)
// Utility
void PrintWindowsError(const wchar_t *functionName, DWORD lastError = -1);
+bool GetWinMuteVersion(std::wstring &versNumber);
static const wchar_t *PROGRAM_NAME = L"WinMute";
constexpr int WM_SAVESETTINGS = WM_USER + 300;