Unless $Pre is assigned to be a function which holds its arguments unevaluated, input expressions will be evaluated before $Pre is applied, so the effect of $Pre will be the same as $Post.
$Pre is applied to expressions, while $PreRead is applied to strings which have not yet been parsed into expressions.