[ros-diffs] [janderwald] 40967: - Play default logon sound when logging on - Due to unknown issues, this only works at the 2nd login ATM

janderwald at svn.reactos.org janderwald at svn.reactos.org
Mon May 18 17:41:01 CEST 2009


Author: janderwald
Date: Mon May 18 19:41:00 2009
New Revision: 40967

URL: http://svn.reactos.org/svn/reactos?rev=40967&view=rev
Log:
- Play default logon sound when logging on
- Due to unknown issues, this only works at the 2nd login ATM

Modified:
    trunk/reactos/base/system/userinit/userinit.c

Modified: trunk/reactos/base/system/userinit/userinit.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/userinit/userinit.c?rev=40967&r1=40966&r2=40967&view=diff
==============================================================================
--- trunk/reactos/base/system/userinit/userinit.c [iso-8859-1] (original)
+++ trunk/reactos/base/system/userinit/userinit.c [iso-8859-1] Mon May 18 19:41:00 2009
@@ -591,6 +591,51 @@
         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 @@
     SetUserSettings();
     StartShell();
     NotifyLogon();
+    PlayLogonSound();
     return 0;
 }
 



More information about the Ros-diffs mailing list