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)
{
command += 4; // Skip PLAY
if (_wcsnicmp(L"STOP", command, 4) == 0)
{
PlaySound(NULL, NULL, SND_PURGE);
}
else else
{ {
// Check for built-ins
if (_wcsnicmp(L"PLAY", command, 4) == 0)
{
if (command[4] == L' ' || // PLAY
_wcsnicmp(L"LOOP ", &command[4], 5) == 0) // PLAYLOOP
{
command += 4; // Skip PLAY
DWORD flags = SND_FILENAME | SND_ASYNC; DWORD flags = SND_FILENAME | SND_ASYNC;
if (_wcsnicmp(L"LOOP", command, 4) == 0) if (command[0] != L' ')
{ {
flags |= SND_LOOP | SND_NODEFAULT; flags |= SND_LOOP | SND_NODEFAULT;
command += 4; // Skip LOOP command += 4; // Skip LOOP
} }
if (command[0] == L' ') ++command; // Skip the space
if (command[0] != L'\0')
{ {
command += 1; // Skip the space
strCommand = command; strCommand = command;
if (!strCommand.empty())
{
// 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
}
else // Run command
{ {
PlaySound(NULL, NULL, SND_PURGE);
return;
}
}
// Run command
LSExecute(NULL, command, SW_SHOWNORMAL); LSExecute(NULL, command, SW_SHOWNORMAL);
} }
} }