2008-05-18 15:54:43 +00:00
|
|
|
using System;
|
|
|
|
using System.Xml;
|
|
|
|
|
|
|
|
using TechBot.Library;
|
|
|
|
|
|
|
|
namespace TechBot.Commands.Common
|
|
|
|
{
|
|
|
|
[Command("wm" , Help = "!wm <value> or !wm <name>")]
|
|
|
|
public class WMCommand : XmlCommand
|
|
|
|
{
|
|
|
|
public WMCommand()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
public override string XmlFile
|
|
|
|
{
|
|
|
|
get { return Settings.Default.WMXml; }
|
|
|
|
}
|
|
|
|
|
|
|
|
[CommandParameter("wm", "The windows message to check" , DefaultParameter = true)]
|
|
|
|
public string WMText
|
|
|
|
{
|
|
|
|
get { return Parameters; }
|
|
|
|
set { Parameters = value; }
|
|
|
|
}
|
|
|
|
|
|
|
|
public override void ExecuteCommand()
|
|
|
|
{
|
2008-05-18 16:01:34 +00:00
|
|
|
if (string.IsNullOrEmpty(WMText))
|
2008-05-18 15:54:43 +00:00
|
|
|
{
|
|
|
|
Say("Please provide a valid window message value or name.");
|
|
|
|
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
NumberParser np = new NumberParser();
|
|
|
|
long wm = np.Parse(WMText);
|
|
|
|
string output;
|
|
|
|
if (np.Error)
|
|
|
|
{
|
|
|
|
// Assume "!wm <name>" form.
|
|
|
|
output = GetWmNumber(WMText);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
output = GetWmDescription(wm);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (output != null)
|
|
|
|
{
|
|
|
|
Say("{0} is {1}.",
|
|
|
|
WMText,
|
|
|
|
output);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
Say("I don't know about window message {0}.", WMText);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private string GetWmDescription(long wm)
|
|
|
|
{
|
|
|
|
XmlElement root = base.m_XmlDocument.DocumentElement;
|
|
|
|
XmlNode node = root.SelectSingleNode(String.Format("WindowMessage[@value='{0}']",
|
|
|
|
wm));
|
|
|
|
if (node != null)
|
|
|
|
{
|
|
|
|
XmlAttribute text = node.Attributes["text"];
|
|
|
|
if (text == null)
|
|
|
|
throw new Exception("Node has no text attribute.");
|
|
|
|
return text.Value;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
private string GetWmNumber(string wmName)
|
|
|
|
{
|
|
|
|
XmlElement root = base.m_XmlDocument.DocumentElement;
|
|
|
|
XmlNode node = root.SelectSingleNode(String.Format("WindowMessage[@text='{0}']",
|
|
|
|
wmName));
|
|
|
|
if (node != null)
|
|
|
|
{
|
|
|
|
XmlAttribute value = node.Attributes["value"];
|
|
|
|
if (value == null)
|
|
|
|
throw new Exception("Node has no value attribute.");
|
|
|
|
return value.Value;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|