From 175447b431a8b6910130403f62a7dc86c11381b1 Mon Sep 17 00:00:00 2001 From: Johannes Anderwald Date: Mon, 18 May 2009 15:41:00 +0000 Subject: [PATCH] - Play default logon sound when logging on - Due to unknown issues, this only works at the 2nd login ATM svn path=/trunk/; revision=40967 --- reactos/base/system/userinit/userinit.c | 46 +++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/reactos/base/system/userinit/userinit.c b/reactos/base/system/userinit/userinit.c index c15471b7958..e9b3e6480c8 100644 --- a/reactos/base/system/userinit/userinit.c +++ b/reactos/base/system/userinit/userinit.c @@ -591,6 +591,51 @@ static VOID SetUserPreferences(VOID) WARN("RegOpenKeyEx() failed with error %lu\n", rc); } +static VOID +PlayLogonSound() +{ + HKEY hKey; + WCHAR szBuffer[MAX_PATH] = {0}; + WCHAR szDest[MAX_PATH]; + DWORD dwSize = sizeof(szBuffer); + HMODULE hLibrary; + typedef BOOL WINAPI (*PLAYSOUNDW)(LPCWSTR,HMODULE,DWORD); + PLAYSOUNDW Play; + + if (RegOpenKeyExW(HKEY_CURRENT_USER, L"AppEvents\\Schemes\\Apps\\.Default\\WindowsLogon\\.Current", 0, KEY_READ, &hKey) != ERROR_SUCCESS) + { + return; + } + + if (RegQueryValueExW(hKey, NULL, NULL, NULL, (LPBYTE)szBuffer, &dwSize) != ERROR_SUCCESS) + { + RegCloseKey(hKey); + return; + } + + + RegCloseKey(hKey); + + if (!szBuffer[0]) + return; + + + szBuffer[MAX_PATH-1] = L'\0'; + if (ExpandEnvironmentStringsW(szBuffer, szDest, MAX_PATH)) + { + hLibrary = LoadLibraryW(L"winmm.dll"); + if (hLibrary) + { + Play = (PLAYSOUNDW)GetProcAddress(hLibrary, "PlaySoundW"); + if (Play) + { + Play(szDest, NULL, SND_FILENAME); + } + FreeLibrary(hLibrary); + } + } +} + static VOID SetUserSettings(VOID) { @@ -640,6 +685,7 @@ wWinMain(IN HINSTANCE hInst, SetUserSettings(); StartShell(); NotifyLogon(); + PlayLogonSound(); return 0; } -- 2.17.1