You can always get an instance of the particular IGPFunction
and execute it yourself. It is less convenient than using the IGeoProcessor
since it requires you to handle the input and output parameters all yourself (which you probably know how to do if you develop your own tool), but it also allows you to have full control over the messages the tool produces.