/// <summary>
    /// Called immediately prior to the GeoProcessor executing a tool.
    /// </summary>
    /// <param name="Tool"></param>
    /// <param name="Values"></param>
    /// <param name="processID"></param>
    void IGeoProcessorEvents.PreToolExecute(IGPTool Tool, IArray Values, int processID)
    {
      //create a new instance of GPPreToolExecuteEventArgs
      GPPreToolExecuteEventArgs e = new GPPreToolExecuteEventArgs();
      e.DisplayName = Tool.DisplayName;
      e.Name = Tool.Name;
      e.PathName = Tool.PathName;
      e.Toolbox = Tool.Toolbox.Alias;
      e.ToolCategory = Tool.ToolCategory;
      e.ToolType = Tool.ToolType;
      e.Description = Tool.Description;
      e.ProcessID = processID;

      //fire the PreTool event
      if (null != GPPreToolExecute)
        GPPreToolExecute(this, e);

    }
 static void OnGPPreToolExecute(object sender, GPPreToolExecuteEventArgs e)
 {
   System.Diagnostics.Trace.WriteLine(e.Description);
 }