2 changes needed I think:

1. m_strManualSearch isn't needed - you can just use a temporary string here.  Or are you saving it here so that the next search can use it in case the first returned no results?

2. I think it'd be tidier if the keyboard stuff was done outside Search(), e.g. in the OnMessage() handler, with the string to search passed into Search() instead of the boolean.  Then you don't need the two url.SetOptions (not that they're a problem) as you can just do:
```
if (!search.empty())
{
  url.SetOption("action", "manualsearch");
  url.SetOption("searchstring", search);
}
else
  url.SetOption("action", "search");
```