The following code opens a link in an existing browser window when browserExe is pointing to Firefox, Safari or Chrome. When pointing to IEXPLORE.EXE (IE7) a new windows is opened.
ProcessStartInfo pi = new ProcessStartInfo(browserExe, url);
Process.Start(pi);
This opens a tab in an existing window as intended, when IE is the default browser.
ProcessStartInfo pi = new ProcessStartInfo(url);
Process.Start(pi);
How to i reuse an existing IE windows, when IE is NOT the default browser?
Using shdocvw library (add reference to it, you can find it in windows\system32) you can get the list of instances and call navigate with the newtab parameter:
Edit: in some cases you may have to check if the shellwindow corresponds to a real iexplorer an not to any other windows shell (in w7 all instances are returned, don’t know now for others).
You may also find these additional IE Navigate Flags useful. Full description of the flags are available at http://msdn.microsoft.com/en-us/library/dd565688(v=vs.85).aspx