Non è una prassi molto frequente, ma se si vuole lanciare programmaticamente il Document Explorer (dexplore.exe) per visualizzare un topic piuttosto che filtrare contenuti ed indici è interessante capire anzitutto le command-line options che esso espone (bellissima è l'opzione /UseHelpSettings la cui documentazione è "Microsoft Internal Use Only." :D). Ecco ad esempio una classe utility (mooolto semplificata) per ricercare al volo un topic tramite Document Explorer:
public class DocumentExplorer
{
public const int V8 = 8; // VS2005
public const int V9 = 9; // VS2008
public void SearchTopic(string keywordTopic, int majorVersion)
{
Process dExploreProcess = new Process();
dExploreProcess.StartInfo.FileName = GetDocumentExplorerExecutable(majorVersion);
if (!string.IsNullOrEmpty(keywordTopic))
{
if (keywordTopic.Trim().Contains(" ")) keywordTopic = "\"" + keywordTopic + "\"";
dExploreProcess.StartInfo.Arguments = "/LaunchFKeywordTopic " + keywordTopic;
}
dExploreProcess.Start();
}
private string GetDocumentExplorerExecutable(int majorVersion)
{
string relativePath = "Microsoft Shared\\Help " + majorVersion.ToString() + "\\dexplore.exe";
string commonX86 = Environment.GetEnvironmentVariable("CommonProgramFiles(x86)");
if (!string.IsNullOrEmpty(commonX86))
{
string pathX86 = Path.Combine(commonX86, relativePath);
if (File.Exists(pathX86)) return pathX86;
}
string common = Environment.GetEnvironmentVariable("CommonProgramFiles");
return Path.Combine(common, relativePath);
}
}
Ovviamente esistono altri metodi molto più raffinati per interagire da codice con il Document Explorer (in base alle specifiche esigenze). Per chi volesse approfondire l'argomento segnalo immediatamente questo bell'articolo di Alessandro del Sole.