Я бы не рекомендовал использовать обработчики onXXX (например, onClick) напрямую, поскольку это заменит любой ранее подключенный обработчик. Это может фактически изменить / уничтожить поведение страницы. Если вы работаете с веб-страницей, которая не находится под вашим контролем, лучше использовать attachEvent :
(tmp as IHTMLElement2).attachEvent('onclick', callbackProcedureDisp);
И не забудьте отключить с помощью detachEvent :
(tmp as IHTMLElement2).detachEvent('onclick', callbackProcedureDisp);
Внимание: один и тот же обработчик можно подключить несколько раз. В этом случае ваш обработчик также будет вызываться несколько раз.
Если вы заинтересованы только в onclick, вы можете просто добавить один обработчик к корневому элементу, и вам не нужно перемещаться по всем элементам. MSDN устанавливает пузыри событий, поэтому вы можете просто прикрепить один обработчик событий к элементу документа и проверять элемент srcElement объекта IHTMLEventObj при каждом срабатывании события.