<package xmlns="http://schemas.microsoft.com/packaging/2015/06/nuspec.xsd">
<metadata>
<id>winmute</id>
- <version>1.4.4.20170814</version>
+ <version>1.4.6.20200424</version>
<title>WinMute</title>
<authors>Alexander Steinhöfer</authors>
<owners>Alexander Steinhöfer</owners>
<packageSourceUrl>https://github.com/lx-s/WinMute/releases</packageSourceUrl>
<projectUrl>https://github.com/lx-s/WinMute/</projectUrl>
- <iconUrl>https://cdn.rawgit.com/lx-s/WinMute/1.4.4/WinMute/app.ico</iconUrl>
+ <iconUrl>https://cdn.rawgit.com/lx-s/WinMute/1.4.6/WinMute/app.ico</iconUrl>
<tags>winmute windows utility audio</tags>
<summary>Automatic sound muter</summary>
<description>WinMute automatically mutes your PC volume if you lock your screen or the screensaver is running.</description>
- <copyright>© 2016, Alexander Steinhöfer</copyright>
- <licenseUrl>https://cdn.rawgit.com/lx-s/WinMute/1.4.4/LICENSE</licenseUrl>
+ <copyright>© 2020, Alexander Steinhöfer</copyright>
+ <licenseUrl>https://cdn.rawgit.com/lx-s/WinMute/1.4.6/LICENSE</licenseUrl>
<dependencies>
<dependency id="vcredist2017" />
</dependencies>
</metadata>
<files>
<file src="tools\**" target="tools" />
- <file src="bin\WinMute.exe" target="bin" />
- <file src="bin\WinMute.exe.gui" target="bin" />
- <file src="bin\ScreensaverNotify.dll" target="bin" />
+ <file src="bin\x86\WinMute.exe" target="bin" />
+ <file src="bin\x86\WinMute.exe.gui" target="bin" />
+ <file src="bin\x86\ScreensaverNotify.dll" target="bin" />
<file src="bin\changelog.txt" target="bin" />
<file src="bin\license.txt" target="bin" />
<file src="bin\liesmich.html" target="bin" />
+Version 1.5.0 (2020-xx-yy)
+ * Added support for mute on suspend, shutdown and logout
+ Automatic audio-restore is disabled for these events.
Version 1.4.6 (2020-04-24)
* Compiled with spectre migitations... just 'cause
* Added "Support"-Link to About dialog
<html lang="de">
<head>
<meta charset="utf-8">
- <title>WinMute 1.4.6 - Lies mich</title>
+ <title>WinMute 1.5.0 - Lies mich</title>
<style type="text/css">
<!--
</style>
</head>
<body>
- <h1>WinMute 1.4.6</h1>
+ <h1>WinMute 1.5.0</h1>
<p class="copyright">© Copyright 2020, Alexander Steinhöfer - <a href="http://www.lx-s.de">www.lx-s.de</a></p>
<h2>Über</h2>
- <p>WinMute schaltet Windows stumm, sobald sie ihren PC sperren oder sich der Bildschirmschoner einschaltet.</p>
+ <p>WinMute kann Windows automatisch stumm schalten, sobald</p>
+ <ol>
+ <li>Sie den PC sperren.</li>
+ <li>sich der Bildschirmschoner aktiviert.</li>
+ <li>der PC heruntergefahren wird.</li>
+ <li>Sie sich Abmelden.</li>
+ <li>der PC in den Ruhezustand geht.</li>
+ </ol>
<p>
Das ist vor allem in einer Büroumgebung nützlich, wenn Sie Ihren
Schreibtisch verlassen, aber die Kollegen nicht mit Musik oder
- sonstigen Geräuschen aus Ihrem Computer stören möchten.
+ sonstigen Geräuschen aus Ihrem Computer stören möchten
+ oder aber Sie bei der nächsten Präsentation sicher gehen möchten, dass
+ der Ton Stumm ist, sobald der PC hochgefahren wird.
</p>
<a name="requirements"></a>
Wenn sie WinMute automatisch mit Windows starten möchten,
kopieren sie eine Verknüpfung zur WinMute.exe in den "Autostart"
Ordner, den sie im Startmenü unter "Programme" finden (um diesen
- Ordner zu finden drücken sie Windows+R auf ihrer Tastatur und tippen dann
- "Shell:Startup" in das Textfeld ein. Bestätigen sie das Fenster mit OK).
+ Ordner zu finden drücken sie Windows+R auf ihrer Tastatur und tippen dann
+ "Shell:Startup" in das Textfeld ein. Bestätigen sie das Fenster mit OK).
</p>
<h2>Deinstallation</h2>
<p>
Einfach die WinMute.exe und ScreensaverNotify.dll löschen*. Zusätzlich legt WinMute in der Registry (regedit.exe)
- im Verzeichnis HKEY_CURRENT_USER\Software\lx-systems\WinMute ab. Sollten sie die von WinMute
- gespeicherten Einstellungen nichtmehr benötigen, können sie diese einfach entfernen.
+ im Verzeichnis HKEY_CURRENT_USER\Software\lx-systems\WinMute ab. Sollten sie die von WinMute
+ gespeicherten Einstellungen nichtmehr benötigen, können sie diese einfach entfernen.
</p>
<p>
- * Es kann sein, dass sich diese dll nicht sofort löschen lässt. Bei einem Fehler probieren sie es einfach
- spätestens beim nächsten Neustart erneut. Diese Unannehmlichkeit ist leider eine Windows-Limitierung.
+ * Es kann sein, dass sich diese dll nicht sofort löschen lässt. Bei einem Fehler probieren sie es einfach
+ spätestens beim nächsten Neustart erneut. Diese Unannehmlichkeit ist leider eine Windows-Limitierung.
</p>
<h2>Benutzung</h2>
<p>
Sobald das Programm läuft, wird die
Lautstärke automatisch auf 0 gedreht, sobald Sie den PC sperren
- oder sich der Bildschirmschoner aktiviert.
+ oder sich der Bildschirmschoner aktiviert.
Wenn Sie wieder an den PC zurückkehren, wird die Lautstärke auf den
- ursprünglichen Wert zurückgestellt.
+ ursprünglichen Wert zurückgestellt.
</p><p>
Wenn dieses Verhalten kurzzeitig deaktiviert werden soll, können
Sie dies über einen Rechtsklick auf das Taskbar-Icon bei der Uhr
erreichen, indem sie den Haken bei "Mute on Workstation lock" bzw.
- "Mute on Screensaver start" tentfernen.
+ "Mute on Screensaver start" tentfernen.
</p>
</body>
</html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>WinMute 1.4.6 - Readme</title>
+ <title>WinMute 1.5.0 - Readme</title>
<style type="text/css">
<!--
</style>
</head>
<body>
- <h1>WinMute 1.4.6</h1>
+ <h1>WinMute 1.5.0</h1>
<p class="copyright">© Copyright 2020, by Alexander Steinhöfer - <a href="http://www.lx-s.de">www.lx-s.de</a></p>
<h2>About</h2>
- <p>WinMute automatically mutes your PC volume if you lock your screen or the screensaver is running.</p>
+ <p>WinMute automatically can mute your volume when</p>
+ <ol>
+ <li>You lock your PC.</li>
+ <li>The screensaver turns on.</li>
+ <li>Your PC shuts down</li>
+ <li>You log off</li>
+ <li>Your PC goes to sleep</li>
+ </ol>
<p>
This is very helpful e.g. if you leave your desk and don't want
to annoy your co-workers with random sounds or music from
- your computer.
+ your computer or don't want music blasting out of your speakers,
+ the next time you power on your pc during a presentation.
</p>
<a name="requirements"></a>
If you want WinMute to automatically start with your windows,
just create a shortcut to the winmute.exe file in the "Startup"
folder located in your Windows Startmenu (to open this folder,
- press Win+R and enter "Shell:Startup", then click "OK").
+ press Win+R and enter "Shell:Startup", then click "OK").
</p>
<h2>Uninstalling WinMute</h2>
<p>
Just delete the WinMute.exe and ScreensaverNotify.dll* file from your hard drive.
- If you want to also remove your personal WinMute settings, then open
- the registry (regedit.exe) and delete the Folder located in
- HKEY_CURRENT_USER\Software\lx-systems\WinMute.
+ If you want to also remove your personal WinMute settings, then open
+ the registry (regedit.exe) and delete the Folder located in
+ HKEY_CURRENT_USER\Software\lx-systems\WinMute.
</p>
<p>
- * It can happen, that you cannot remove this DLL file right away.
- If you get an error trying to remove it, just wait until your next reboot
- and delete it afterwards. This is unfortunately a windows limitation.
+ * It can happen, that you cannot remove this DLL file right away.
+ If you get an error trying to remove it, just wait until your next reboot
+ and delete it afterwards. This is unfortunately a windows limitation.
</p>
<h2>Usage</h2>
<p>Start it and that's it!</p>
<p>
Whenever you lock your screen from now on or the screensaver starts,
- WinMute will automatically mute your windows volume, and unmute it
- right away when you come back to your pc.<br>
+ WinMute will automatically mute your windows volume, and unmute it
+ right away when you come back to your pc.<br>
If you want to disable this behaviour temporary, right-click
- on the taskbar notification icon and uncheck the menu item
- "Mute on Workstationlock" / "Mute on Screensaver start".
+ on the taskbar notification icon and uncheck the menu item
+ "Mute on Workstationlock" / "Mute on Screensaver start".
</p>
</body>
</html>
case SettingsKey::RESTORE_AUDIO:
keyStr = _T("RestoreAudio");
break;
+ case SettingsKey::MUTE_ON_SUSPEND:
+ keyStr = _T("MuteOnSuspend");
+ break;
+ case SettingsKey::MUTE_ON_SHUTDOWN:
+ keyStr = _T("MuteOnShutdown");
+ break;
+ case SettingsKey::MUTE_ON_LOGOUT:
+ keyStr = _T("MuteOnLogout");
}
return keyStr;
}
return false;
}
return true;
-}
\ No newline at end of file
+}
#include "StdAfx.h"
enum class SettingsKey {
- MUTE_ON_LOCK,
- MUTE_ON_SCREENSAVER,
- RESTORE_AUDIO
+ MUTE_ON_LOCK
+ , MUTE_ON_SCREENSAVER
+ , RESTORE_AUDIO
+ , MUTE_ON_SUSPEND
+ , MUTE_ON_SHUTDOWN
+ , MUTE_ON_LOGOUT
};
class Settings {
private:
HKEY hRegSettingsKey_;
-};
\ No newline at end of file
+};
/*
WinMute
- Copyright (c) 2017, Alexander Steinhoefer
+ Copyright (c) 2020, Alexander Steinhoefer
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
/*
WinMute
- Copyright (c) 2017, Alexander Steinhoefer
+ Copyright (c) 2020, Alexander Steinhoefer
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
/*
WinMute
- Copyright (c) 2017, Alexander Steinhoefer
+ Copyright (c) 2020, Alexander Steinhoefer
-----------------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without
WinMute::MuteConfig::MuteConfig()
{
- this->withRestore.muteOnLock = true;
- this->withRestore.muteOnScreensaver = true;
- this->withRestore.muteOnRemoteSession = true;
+ this->withRestore.onLock = true;
+ this->withRestore.onScreensaver = true;
this->restoreAudio = true;
- this->noRestore.muteOnLogoff = false;
- this->noRestore.muteOnSuspend = false;
- this->noRestore.muteOnShutdown = false;
+ this->noRestore.onLogoff = false;
+ this->noRestore.onSuspend = false;
+ this->noRestore.onShutdown = false;
}
WinMute::WinMute() :
return true;
}
-#define CHECK_MENU_ITEM(cond) (cond) ? MF_CHECKED : MF_UNCHECKED
+#define CHECK_MENU_ITEM(id, cond) \
+ (CheckMenuItem(hTrayMenu_, ID_TRAYMENU_ ## id, \
+ (cond) ? MF_CHECKED : MF_UNCHECKED) != -1)
bool WinMute::InitTrayMenu()
{
hTrayMenu_ = LoadMenu(hglobInstance, MAKEINTRESOURCE(IDR_TRAYMENU));
PrintWindowsError(_T("LoadMenu"));
return false;
} else if (
- CheckMenuItem(hTrayMenu_, ID_TRAYMENU_MUTEONLOCK,
- CHECK_MENU_ITEM(muteConfig_.withRestore.muteOnLock)) == -1 ||
- CheckMenuItem(hTrayMenu_, ID_TRAYMENU_MUTEONSCREENSAVER,
- CHECK_MENU_ITEM(muteConfig_.withRestore.muteOnScreensaver)) == -1 ||
- CheckMenuItem(hTrayMenu_, ID_TRAYMENU_RESTOREAUDIO,
- CHECK_MENU_ITEM(muteConfig_.restoreAudio)) == -1) {
+ !CHECK_MENU_ITEM(MUTEONLOCK, muteConfig_.withRestore.onLock) ||
+ !CHECK_MENU_ITEM(MUTEONSCREENSAVER, muteConfig_.withRestore.onScreensaver) ||
+ !CHECK_MENU_ITEM(RESTOREAUDIO, muteConfig_.restoreAudio) ||
+ !CHECK_MENU_ITEM(MUTEONSUSPEND, muteConfig_.noRestore.onSuspend) ||
+ !CHECK_MENU_ITEM(MUTEONSHUTDOWN, muteConfig_.noRestore.onShutdown) ||
+ !CHECK_MENU_ITEM(MUTEONLOGOUT, muteConfig_.noRestore.onLogoff)) {
return false;
}
return true;
return false;
}
- if (muteConfig_.withRestore.muteOnScreensaver) {
+ if (muteConfig_.withRestore.onScreensaver) {
if (!scrnSaverNoti_.ActivateNotifications(hWnd_)) {
return false;
}
bool WinMute::LoadDefaults()
{
- muteConfig_.withRestore.muteOnLock =
+ muteConfig_.withRestore.onLock =
settings_.QueryValue(SettingsKey::MUTE_ON_LOCK, 1) != 0;
- muteConfig_.withRestore.muteOnScreensaver =
+ muteConfig_.withRestore.onScreensaver =
settings_.QueryValue(SettingsKey::MUTE_ON_SCREENSAVER, 1) != 0;
muteConfig_.restoreAudio =
settings_.QueryValue(SettingsKey::RESTORE_AUDIO, 1) != 0;
+
+ muteConfig_.noRestore.onLogoff =
+ settings_.QueryValue(SettingsKey::MUTE_ON_LOGOUT, 0) != 0;
+ muteConfig_.noRestore.onSuspend =
+ settings_.QueryValue(SettingsKey::MUTE_ON_SUSPEND, 0) != 0;
+ muteConfig_.noRestore.onShutdown =
+ settings_.QueryValue(SettingsKey::MUTE_ON_SHUTDOWN, 0) != 0;
+
return true;
}
case ID_TRAYMENU_EXIT:
SendMessage(hWnd, WM_CLOSE, 0, 0);
break;
+ case ID_TRAYMENU_MUTE: {
+ bool state = false;
+ ToggleMenuCheck(ID_TRAYMENU_MUTE, &state);
+ if (!state) {
+ audio_->UnMute();
+ } else {
+ audio_->Mute();
+ }
+ break;
+ }
case ID_TRAYMENU_MUTEONLOCK:
ToggleMenuCheck(ID_TRAYMENU_MUTEONLOCK,
- &muteConfig_.withRestore.muteOnLock);
+ &muteConfig_.withRestore.onLock);
settings_.SetValue(SettingsKey::MUTE_ON_LOCK,
- muteConfig_.withRestore.muteOnLock);
+ muteConfig_.withRestore.onLock);
break;
case ID_TRAYMENU_RESTOREAUDIO:
ToggleMenuCheck(ID_TRAYMENU_RESTOREAUDIO, &muteConfig_.restoreAudio);
break;
case ID_TRAYMENU_MUTEONSCREENSAVER:
ToggleMenuCheck(ID_TRAYMENU_MUTEONSCREENSAVER,
- &muteConfig_.withRestore.muteOnScreensaver);
+ &muteConfig_.withRestore.onScreensaver);
settings_.SetValue(SettingsKey::MUTE_ON_SCREENSAVER,
- muteConfig_.withRestore.muteOnScreensaver);
- if (muteConfig_.withRestore.muteOnScreensaver) {
+ muteConfig_.withRestore.onScreensaver);
+ if (muteConfig_.withRestore.onScreensaver) {
scrnSaverNoti_.ActivateNotifications(hWnd_);
} else {
scrnSaverNoti_.ClearNotifications();
}
break;
case ID_TRAYMENU_MUTEONSHUTDOWN:
+ ToggleMenuCheck(ID_TRAYMENU_MUTEONSHUTDOWN,
+ &muteConfig_.noRestore.onShutdown);
+ settings_.SetValue(SettingsKey::MUTE_ON_LOGOUT,
+ muteConfig_.noRestore.onShutdown);
break;
case ID_TRAYMENU_MUTEONSUSPEND:
- break;
- case ID_TRAYMENU_MUTEONLOGOFF:
- break;
- case ID_TRAYMENU_MUTE: {
- bool state = false;
- ToggleMenuCheck(ID_TRAYMENU_MUTE, &state);
- if (!state) {
- audio_->UnMute();
- } else {
- audio_->Mute();
- }
+ ToggleMenuCheck(ID_TRAYMENU_MUTEONSUSPEND,
+ &muteConfig_.noRestore.onSuspend);
+ settings_.SetValue(SettingsKey::MUTE_ON_SUSPEND,
+ muteConfig_.noRestore.onSuspend);
+ break;
+ case ID_TRAYMENU_MUTEONLOGOUT:
+ ToggleMenuCheck(ID_TRAYMENU_MUTEONLOGOUT,
+ &muteConfig_.noRestore.onLogoff);
+ settings_.SetValue(SettingsKey::MUTE_ON_LOGOUT,
+ muteConfig_.noRestore.onLogoff);
break;
- } default:
- __assume(0);
}
return 0;
}
static bool wasAlreadyMuted = false;
if (wParam == WTS_SESSION_LOCK) {
wasAlreadyMuted = audio_->IsMuted();
- if (!wasAlreadyMuted && muteConfig_.withRestore.muteOnLock) {
+ if (!wasAlreadyMuted && muteConfig_.withRestore.onLock) {
audio_->Mute();
}
} else if (wParam == WTS_SESSION_UNLOCK) {
if (!wasAlreadyMuted &&
muteConfig_.restoreAudio &&
- muteConfig_.withRestore.muteOnLock) {
+ muteConfig_.withRestore.onLock) {
audio_->UnMute();
}
- } else if (wParam == WTS_SESSION_LOGOFF) {
- if (muteConfig_.noRestore.muteOnLogoff) {
- audio_->Mute();
- }
- } else if (wParam == WTS_REMOTE_DISCONNECT) {
- wasAlreadyMuted = audio_->IsMuted();
- if (!wasAlreadyMuted &&
- muteConfig_.withRestore.muteOnRemoteSession) {
- audio_->Mute();
- }
- } else if (wParam == WTS_REMOTE_DISCONNECT) {
- if (!wasAlreadyMuted &&
- muteConfig_.restoreAudio &&
- muteConfig_.withRestore.muteOnRemoteSession) {
- audio_->UnMute();
- }
}
return 0;
}
+ case WM_POWERBROADCAST:
+ if (wParam == PBT_APMSUSPEND) {
+ if (muteConfig_.noRestore.onSuspend) {
+ audio_->Mute();
+ }
+ }
+ break;
+ case WM_QUERYENDSESSION:
+ if (lParam == 0) { // Shutdown
+ if (muteConfig_.noRestore.onShutdown) {
+ audio_->Mute();
+ }
+ } else if (lParam == ENDSESSION_LOGOFF) {
+ if (muteConfig_.noRestore.onLogoff) {
+ audio_->Mute();
+ }
+ }
+ break;
case WM_SCRNSAVE_CHANGE: {
static bool wasAlreadyMuted = false;
if (wParam == SCRNSAVE_START) {
wasAlreadyMuted = audio_->IsMuted();
- if (!wasAlreadyMuted && muteConfig_.withRestore.muteOnScreensaver) {
+ if (!wasAlreadyMuted && muteConfig_.withRestore.onScreensaver) {
audio_->Mute();
}
} else if (wParam == SCRNSAVE_STOP) {
if (!wasAlreadyMuted &&
muteConfig_.restoreAudio &&
- muteConfig_.withRestore.muteOnScreensaver) {
+ muteConfig_.withRestore.onScreensaver) {
audio_->UnMute();
}
}
struct MuteConfig {
MuteConfig();
struct {
- bool muteOnLock;
- bool muteOnScreensaver;
- bool muteOnRemoteSession;
+ bool onLock;
+ bool onScreensaver;
} withRestore;
+ bool restoreAudio;
struct {
- bool muteOnLogoff;
- bool muteOnShutdown;
- bool muteOnSuspend;
+ bool onLogoff;
+ bool onShutdown;
+ bool onSuspend;
} noRestore;
- bool restoreAudio;
} muteConfig_;
TrayIcon trayIcon_;
MENUITEM "... Workstation is locked", ID_TRAYMENU_MUTEONLOCK, CHECKED
MENUITEM "... Screensaver starts", ID_TRAYMENU_MUTEONSCREENSAVER, CHECKED
MENUITEM SEPARATOR
- MENUITEM "Afterwards...", ID_TRAYMENU_AFTERWARDS, INACTIVE
- MENUITEM "... Restore volume", ID_TRAYMENU_RESTOREAUDIO, CHECKED
+ MENUITEM "... Restore volume when returning", ID_TRAYMENU_RESTOREAUDIO, CHECKED
+ MENUITEM SEPARATOR
+ MENUITEM "Mute on (no volume restore)...", ID_TRAYMENU_AFTERWARDS, INACTIVE
+ MENUITEM "... Shutdown", ID_TRAYMENU_MUTEONSHUTDOWN
+ MENUITEM "... Sleep", ID_TRAYMENU_MUTEONSUSPEND
+ MENUITEM "... Logout", ID_TRAYMENU_MUTEONLOGOUT
MENUITEM SEPARATOR
MENUITEM "Mute now", ID_TRAYMENU_MUTE
MENUITEM SEPARATOR
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
DEFPUSHBUTTON "OK",IDOK,194,7,50,14
- LTEXT "WinMute v1.4.6",IDC_STATIC,43,9,67,11
+ LTEXT "WinMute v1.5.0",IDC_STATIC,43,9,67,11
CONTROL "<a href=""https://lx-s.de"">lx-systems - lx-s.de</a>",IDC_LINK_HOMEPAGE,
"SysLink",WS_TABSTOP,43,35,69,13
LTEXT "Copyright © 2020, Alexander Steinhöfer",IDC_STATIC,43,22,148,12
//
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 1,4,6,0
- PRODUCTVERSION 1,4,6,0
+ FILEVERSION 1,5,0,0
+ PRODUCTVERSION 1,5,0,0
FILEFLAGSMASK 0x17L
#ifdef _DEBUG
FILEFLAGS 0x1L
BLOCK "000004b0"
BEGIN
VALUE "CompanyName", "lx-systems"
- VALUE "FileDescription", "Automatic volume muting, when PC is locked."
- VALUE "FileVersion", "1.4.6.0"
+ VALUE "FileDescription", "Automatic volume muting."
+ VALUE "FileVersion", "1.5.0.0"
VALUE "InternalName", "WinMute"
VALUE "LegalCopyright", "Copyright (c) 2020, Alexander Steinhöfer"
VALUE "OriginalFilename", "WinMute.exe"
VALUE "ProductName", "WinMute"
- VALUE "ProductVersion", "1.4.6.0"
+ VALUE "ProductVersion", "1.5.0.0"
END
BLOCK "040704b0"
BEGIN
VALUE "CompanyName", "lx-systems"
- VALUE "FileDescription", "Automatisches Stummschalten beim Sperren der Workstation."
- VALUE "FileVersion", "1.4.6.0"
+ VALUE "FileDescription", "Automatisches Stummschalten des PCs."
+ VALUE "FileVersion", "1.5.0.0"
VALUE "InternalName", "WinMute"
VALUE "LegalCopyright", "Copyright (c) 2020, Alexander Steinhöfer"
VALUE "OriginalFilename", "WinMute.exe"
VALUE "ProductName", "WinMute"
- VALUE "ProductVersion", "1.4.6.0"
+ VALUE "ProductVersion", "1.5.0.0"
END
END
BLOCK "VarFileInfo"
#define ID_TRAYMENU_40011 40011
#define ID_TRAYMENU_MUTEON 40012
#define ID_TRAYMENU_AFTERWARDS 40013
+#define ID_TRAYMENU_MUTEONSUSPEND 40014
+#define ID_TRAYMENU_40015 40015
+#define ID_TRAYMENU_SPECIAL 40016
+#define ID_SPECIAL_MUTEWHEN 40017
+#define ID_TRAYMENU_40018 40018
+#define ID_TRAYMENU_40019 40019
+#define ID_TRAYMENU_40020 40020
+#define ID_TRAYMENU_MUTEONSHUTDOWN 40021
+#define ID_TRAYMENU_MUTEONSLEEP 40022
+#define ID_TRAYMENU_MUTEONLOGOFF 40023
+#define ID_TRAYMENU_MUTEONLOGOUT 40024
+#define ID_TRAYMENU_40025 40025
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 108
-#define _APS_NEXT_COMMAND_VALUE 40014
+#define _APS_NEXT_COMMAND_VALUE 40026
#define _APS_NEXT_CONTROL_VALUE 1002
#define _APS_NEXT_SYMED_VALUE 101
#endif