If it is just source code or code compiled into a library, you'll have to use some C++/CLI ugliness to build a mixed-mode .DLL that the C# code can reference (or P/Invoke... I don't have a lot of experience with that, though http://msdn.microsoft.com/en-us/library/aa288468%28v=vs.71%29.aspx ).
Sure there is, you of course will need access to the source code of the tool built in C#. Other then that it is as easy as mapping the Start button to creating a Process and launching it.
using System;
using System.Diagnostics;
namespace ProcessExample
{
class MyExample
{
publicstaticvoid Main()
{
Process myProcess = new Process();
try
{
myProcess.StartInfo.FileName = "C:\\MyProgram.exe"; // Note the absolute path
// Some example settings that are availible.
// If the process doesn't terminate by itself I would recommend
// setting CreateNoWindow to false since you won't be able to
// terminate the process on the desktop (Though you can programmatically)
myProcess.StartInfo.CreateNoWindow = true;
myProcess.StartInfo.UseShellExecute = false;
// This will actually run the process.
myProcess.Start();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
}
It using System.Diagnostics.Process is actually quite simple, so all you need to do is alter the C# source to create a process and launch it when the Start button is hit.