WINDOW win OPENWINDOW win,0,0,800,600,@NOAUTODRAW|@SIZE|@MINBOX|@MAXBOX,0,"BROWSER TEST",&handler if @IDYES = MessageBox(win,"Disable script errors?","",@MB_YESNO) BrowserMakeSilent() ':' do it before ATTACHBROWSER endif ATTACHBROWSER(win) BROWSECMD win,@BROWSELOAD,"
A page with errors

This page calls not existing method document.bla" + _ "aahhh().
" WAITUNTIL win=0 END SUB handler(),INT if @message = @idcreate then CenterWindow(win) if @message = @idclosewindow then CloseWindow(win) RETURN 0 ENDSUB '-------------------------------------------------------- type __VARIANT,2:word vt[4]: word boolVal:endtype const OLECMDID_SHOWSCRIPTERROR = 40 const VARIANT_TRUE = -1 const E_NOINTERFACE = 0x80004002 const E_NOTIMPL = 0x80004001 const VT_BOOL = 11 declare import, WriteProcessMemory(h:int,b:pointer,p:pointer,l:int,w:pointer),int declare import, GetCurrentProcess(),int declare import, IsEqualGUID(riid1:GUID, riid2:GUID),int extern _IID_IOleCommandTarget as GUID class CCommandTarget declare virtual QueryInterface(iid:GUID,ppvObject:pointer),int declare virtual AddRef() declare virtual Release() declare virtual QueryStatus(pguidCmdGroup:GUID, cCmds:int,prgCmds:pointer, pCmdText:pointer),int declare virtual Exec(pguidCmdGroup:GUID, nCmdID:int, nCmdexecopt:int, pvaIn:__VARIANT,pvaOut:__VARIANT),int endclass '---------------------------------------------------- ' globals CCommandTarget g_ccmdt ':' IOleCommandTarget manages special commands like OLECMDID_SHOWSCRIPTERROR ' the previous method uint g_OriginalQueryInterface declare t_OriginalQueryInterface(site:pointer,iid:GUID,ppvObject:pointer),int declare CCommandTarget_vtable_() extern _MyIOleInPlaceSiteTable as int ':' pointer to MyIOleInPlaceSite::QueryInterface sub BrowserMakeSilent() ' initialize the global class pointer temp int myQuery temp = &g_ccmdt *temp = &CCommandTarget_vtable_ myQuery = &BrowserQueryInterface g_OriginalQueryInterface = _MyIOleInPlaceSiteTable ':' copy pointer to _Site_QueryInterface@12 WriteProcessMemory(GetCurrentProcess(), &_MyIOleInPlaceSiteTable, &myQuery, 4, NULL) return endsub ' replaceent for MyIOleInPlaceSite::QueryInterface, we need to extern supported objects sub BrowserQueryInterface(site:pointer,iid:GUID,ppvObject:pointer),int if (IsEqualGUID(iid, _IID_IOleCommandTarget)) *ppvObject = &g_ccmdt return 0 endif return !g_OriginalQueryInterface(site, iid, ppvObject) endsub '-------------------------------------------------------- ' CCommandTarget methods sub CCommandTarget::QueryInterface(iid:GUID,ppvObject:pointer),int return E_NOINTERFACE endsub sub CCommandTarget::AddRef() return endsub sub CCommandTarget::QueryStatus(pguidCmdGroup:GUID, cCmds:int,prgCmds:pointer, pCmdText:pointer),int return E_NOTIMPL endsub sub CCommandTarget::Release() return endsub sub CCommandTarget::Exec(pguidCmdGroup:GUID, nCmdID:int, nCmdexecopt:int, pvaIn:__VARIANT,pvaOut:__VARIANT),int if (nCmdID = OLECMDID_SHOWSCRIPTERROR) pvaOut.boolVal = VARIANT_TRUE pvaOut.vt = VT_BOOL endif return 0 endsub