とりあえずこんな感じになりました。
#include "hspext.as"
#define DIID_DWebBrowserEvents2 "{34A715A0-6587-11D0-924A-0020AFC7AC4D}"
#define DISPID_BEFORENAVIGATE2 250
#define DISPID_NEWWINDOW2 251
#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_NEWWINDOW2 : gosub *OnNewWindow2
if dispid = DISPID_NEWWINDOW3 : gosub *OnNewWindow3
;if dispid = DISPID_BEFORENAVIGATE2 : gosub *OnBeforeNavigate
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)
delcom _Url
// ナビゲートキャンセル
Cancel("val") = 1
delcom Cancel
// ここから既定のブラウザを検出して開く
regkey 3,"http\\shell\\open\\command",0
if stat!=0:dialog "レジストリ読み取りエラー":return
sdim reg,256
getreg reg,"",1,256 //(既定)は""でOK
//以下ゴミとり
s=instr(reg,0,"\"")
if (s!=-1)&(s<2){// " があった場合。
e=instr(reg,s+1,"\"")
if e=-1:e=strlen(reg)
path=strmid(reg,s+1,e-s)
}else{
e=instr(reg,0," ")
path=strmid(reg,0,e)
}
exist path
if strsize=-1:dialog "取得失敗?":return
exec "\""+path+"\" "+url
return