I have a windows forms project. In the current directory I have a Help folder with *.chm files. What is the easiest way to launch them from the application? How can I specif
You should use Help.ShowHelp to do this
var chmFile = "CHM/test.chm";
Help.ShowHelp(ctrl, chmFile);
by default ShowHelp will search file in the application path
I can think of two options, depending on what you actually want. The first is to get the path to the resident directory (where the executing files live) and the second concerns the current directory (the directory specified for the executable to work from):
Resident directory:
var path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
Current directory:
var path = System.Environment.CurrentDirectory;
There is also another option, which, according to documentation gets the path for the executable file that started the application, not including the executable name
:
var path = Application.StartupPath;
As for constructing your path, other answers cover that very well indeed.
The Environment.CurrentDirectory property will be set to the location of your .exe file. So if you place your help folder in there, it will be:
// The path to the Help folder.
string directory = Path.Combine(Environment.CurrentDirectory, "Help");
// The path to the Help file.
string filePath = Path.Combine(directory , "myHelpFile.chm");
// Launch the Help file.
Process.Start(filePath);
EDIT: I should say, that Environment.CurrentDirectory
points to the folder where the process started by default in a Windows Forms application, but its value can be changed by some controls (like the OpenFileDialog
- see here for a workaround) during the lifetime of your application. Under a Windows Service, Environment.CurrentDirectory
maps to the %SystemDirectory%
.
The easiest is
Process.Start("myHelpFile.chm");
This will open the chm
file in the systems default program associated with that file type.
This will work as long as the chm file is located in the same directory as your exe. If you have a sub folder called help, the path will be @"Help\myHelpFile.chm"
.