見やすいように少し書き直しました。
#define DIID_DWebBrowserEvents2 "{34A715A0-6587-11D0-924A-0020AFC7AC4D}"
#define DISPID_NEWWINDOW3 273
axobj ie, "Shell.Explorer.2", 640, 480
comevent ie_event, ie, DIID_DWebBrowserEvents2, *event
url = "http://hsp.tv/"
ie->"Navigate" url
stop
*event
// COMイベント処理
dispid = comevdisp(ie_event)
// 新しいウィンドウを開く処理だった場合
if dispid == DISPID_NEWWINDOW3 : gosub *OnNewWindow3
return
// 新しいウィンドウを開く前に呼び出される
*OnNewWindow3
comevarg Cancel, ie_event, 1, 2
comevarg _Url, ie_event, 4, 2
// 新しく開く先のURLをゲット
ptr = _Url("bstrptr")
dupptr newurl, ptr, 512, 2
url = cnvwtos(newurl) // Unicodeなので変換する
delcom _Url
// ナビゲートキャンセル
Cancel("val") = 1
delcom Cancel
// 既定のブラウザで実行
// 環境によっては既定のブラウザで開かない場合があるみたいなので、
// http://hsp.tv/play/pforum.php?mode=pastwch&num=30722
// の処理を参考にしてください。
exec url, 16
return