There are always multiple ways to 'skin a cat' (BTW, where did that phrase come from?).
My first suggestion would be looking into the Curve object. It has a function called GetClosestPointTo which will give you what you need.
The polyline object seems to inherit from the base curve object.
HTH,
Josh Modglin
InMotion Consulting
http://www.inmotioncon.com