Fixed that the commands that start with "play" is not executed.

This commit is contained in:
spx 2011-08-18 04:05:54 +00:00
parent 12be2ffad1
commit bf7fdad840

View File

@ -3299,29 +3299,29 @@ void CRainmeter::ExecuteCommand(const WCHAR* command, CMeterWindow* meterWindow)
ExecuteBang(bang, arg, meterWindow); ExecuteBang(bang, arg, meterWindow);
} }
} }
else if (_wcsnicmp(L"PLAY", command, 4) == 0) else
{ {
command += 4; // Skip PLAY // Check for built-ins
if (_wcsnicmp(L"STOP", command, 4) == 0) if (_wcsnicmp(L"PLAY", command, 4) == 0)
{ {
PlaySound(NULL, NULL, SND_PURGE); if (command[4] == L' ' || // PLAY
} _wcsnicmp(L"LOOP ", &command[4], 5) == 0) // PLAYLOOP
else
{
DWORD flags = SND_FILENAME | SND_ASYNC;
if (_wcsnicmp(L"LOOP", command, 4) == 0)
{ {
flags |= SND_LOOP | SND_NODEFAULT; command += 4; // Skip PLAY
command += 4; // Skip LOOP
}
if (command[0] == L' ') DWORD flags = SND_FILENAME | SND_ASYNC;
{
command += 1; // Skip the space if (command[0] != L' ')
strCommand = command;
if (!strCommand.empty())
{ {
flags |= SND_LOOP | SND_NODEFAULT;
command += 4; // Skip LOOP
}
++command; // Skip the space
if (command[0] != L'\0')
{
strCommand = command;
// Strip the quotes // Strip the quotes
std::wstring::size_type len = strCommand.length(); std::wstring::size_type len = strCommand.length();
if (len >= 2 && strCommand[0] == L'\"' && strCommand[len - 1] == L'\"') if (len >= 2 && strCommand[0] == L'\"' && strCommand[len - 1] == L'\"')
@ -3332,11 +3332,16 @@ void CRainmeter::ExecuteCommand(const WCHAR* command, CMeterWindow* meterWindow)
PlaySound(strCommand.c_str(), NULL, flags); PlaySound(strCommand.c_str(), NULL, flags);
} }
return;
}
else if (_wcsnicmp(L"STOP", &command[4], 4) == 0) // PLAYSTOP
{
PlaySound(NULL, NULL, SND_PURGE);
return;
} }
} }
}
else // Run command // Run command
{
LSExecute(NULL, command, SW_SHOWNORMAL); LSExecute(NULL, command, SW_SHOWNORMAL);
} }
} }