open a folder view, launch this application, click on init, it detects all instances. just drill-down to see the properties of the objects recursively.
you can now update properties and invoke methods on running instances !
file name : dom_explorer.hta
requirement : ie 5.5 (not tested on ie5.1)
author : jean-luc antoine
submitted : 31/10/2001
updated : 19/11/2001
category : hta
remember : the file extension has to be *.hta
代码如下:
<html>
<head>
<title>dom explorer</title>
<hta:application
applicationname=dom_explorer
border=thick borderstyle=normal
caption=yes contextmenu=yes
id=ohta alert(ohta.applicationname);
innerborder=yes maximizebutton=yes minimizebutton=yes
navigable=no scroll=yes scrollflat=no
selection=yes showintaskbar=yes singleinstance=no
sysmenu=yes version=0.5 windowstate=normal>
<script language=vbscript>
option explicit
dim shapp
set shapp=createobject(shell.application)
function sp2(name,obj,rw,objpath) 'properties
dim chaine
chaine=<tr><td>
if isobject(obj) then
if obj is nothing then
if hidenull.checked then
sp2=
exit function
end if
chaine=chaine & name
elseif vartype(obj)=0 then
chaine=chaine & name
else
chaine=chaine & <a href=# onclick='vbscript:showprop &_
objpath & . & name & , & objpath & . & name &_
' title=' & objpath & . & name & '> & name & </a>
end if
else
chaine=chaine & name
end if
chaine=chaine & </td><td> & typename(obj) & </td><td> & rw & </td><td>
select case vartype(obj)
case 0 'empty
chaine=chaine & <font color=red>uninitialized</font>
case 1 'null 'if isnull(obj) then
if hidenull.checked then
sp2=
exit function
end if
chaine=chaine & <font color=red>no value</font>
case 9 'object
chaine=chaine & <font color=red>can't display</font>
case else
if rw=read/write then
chaine=chaine & <span id= & name & contenteditable=true><b> &_
replace(obj,<,<) & </b></span> <a href='//www.submisscin.com/wap/#' onclick='vbscript: &_
objpath & . & name & =
select case vartype(obj)
'case 2 'vbinteger - cint()
'case 3 'vblong - clng()
'case 4 'vbsingle - csng()
'case 5 'double - cdbl()
'case 6 'vbcurrency - ccur()
case 7 'vbdate
chaine=chaine & cdate( & name & .innertext)
'case 8 'vbstring - cstr()
'case 10 'vberror
case 11 'vbboolean
chaine=chaine & cbool( & name & .innertext)
'case 12 'vbvariant
'case 13 'vbdataobject
'case 14 'vbdecimal
'case 17 'vbbyte - cbyte()
'case 8192 'vbarray
case else
chaine=chaine & name & .innertext
end select
chaine=chaine & ' title='click here to update'>ok</a>
else
chaine=chaine & replace(obj,<,<)
end if
end select
chaine=chaine & </td></tr>
sp2=chaine
end function
function sp(name,nbarg,objpath,title) 'methods
dim chaine,x
chaine=<tr><td>
chaine=chaine & <a href=# onclick='vbscript: & objpath & . & name
if nbarg>0 then chaine=chaine & & name & 1 & .innertext
if nbarg>1 then chaine=chaine & , & name & 2 & .innertext
if nbarg>2 then chaine=chaine & , & name & 3 & .innertext
chaine=chaine & ' title=' & title & '> & name & </a>
chaine=chaine & </td><td>
if nbarg>0 then chaine=chaine & <input type=text name= & name & 1>
chaine=chaine & </td><td>
if nbarg>1 then chaine=chaine & <input type=text name= & name & 2>
chaine=chaine & </td><td>
if nbarg>2 then chaine=chaine & <input type=text name= & name & 3>
chaine=chaine & </td></tr>
sp=chaine
end function
function showframes(obj,depth)
dim chaine,x
on error resume next
x=obj.frames.length
chaine =
if x<>0 then
'chaine =x & vbcrlf
for x=0 to obj.frames.length-1
chaine=chaine & string(1+depth*4, )
chaine=chaine & obj.frames(x).name
chaine=chaine & obj.frames(x).location & vbcrlf
chaine=chaine & showframes(obj.frames(x).document,depth+1)
next
end if
showframes=chaine
end function
sub showprop(obj,op)
'display the object's properties
dim c,r,rw,x
r=read
rw=read/write
x=instrrev(op,.)
if x>0 then
c=left(op,x-1)
c=<a href=# onclick='vbscript:showprop & c & , & c &_
' title=' & c & '> & c & </a><u> & mid(op,x) & </u>
else
c=op
end if
c=properties for & c & - typename : & typename(obj) & <br><table class=prop>
c=c & <tr><td>propname</td><td>type</td><td>access</td><td>value</td></tr>
select case typename(obj) 'see microsoft html object librairy
case ishelldispatch3
c=c & sp2(application,obj.application,r,op)
c=c & sp2(parent,obj.parent,r,op)
c=c & sp2(windows,obj.windows,r,op)
c=c & sp(open,1,op,open a folder)
c=c & sp(explore,1,op,explore a folder)
c=c & sp(minimizeall,0,op,minimize all windows)
c=c & sp(undominimizeall,0,op,undo minimize all windows)
c=c & sp(filerun,0,op,bring up the file run)
c=c & sp(cascadewindows,0,op,cascade windows)
c=c & sp(tilevertically,0,op,tile windows vertically)
c=c & sp(tilehorizontally,0,op,tile windows horizontally)
c=c & sp(shutdownwindows,0,op,exit windows)
c=c & sp(suspend,0,op,suspend the pc)
c=c & sp(ejectpc,0,op,eject the pc)
c=c & sp(settime,0,op,bring up the set time dialog)
c=c & sp(help,0,op,display shell help)
c=c & sp(findfiles,0,op,find files)
c=c & sp(findcomputer,0,op,find a computer)
c=c & sp(refreshmenu,0,op,refresh the menu)
c=c & sp(controlpanelitem,1,op,run a control panel item)
'isrestricted, getsysteminformation, isservicerunning, canstartstopservice
c=c & sp(shellexecute,3,op,execute generic command (file[,args][,dir]))
c=c & sp(findprinter,3,op,find a printer in the directory service ([name][,location][,model]))
c=c & sp(servicestart,2,op,start a service by name, and optionally set it to autostart (name,persistent))
c=c & sp(servicestop,2,op,stop a service by name, and optionally disable autostart (name,persistent))
c=c & sp(showbrowserbar,2,op,show/hide browser bar (clsid,bshow))
c=c & sp(addtorecent,2,op,add an object to the recent docuements(file[,category])
case ishellwindows
c=c & sp2(count,obj.count,r,op)
'c=c & sp2(item,obj.item,r,op)
'for each w in shapp.windows
'next
for x=0 to obj.count-1
c=c & sp2(item( & x & ),obj.item(x),r,op)
next
case iwebbrowser2 'internet explorer
msgbox showframes(obj.document,0)
on error resume next
c=c & sp2(addressbar,obj.addressbar,rw,op)
on error goto 0
c=c & sp2(application,obj.application,r,op) 'microsoft internet explorer
c=c & sp2(busy,obj.busy,r,op)
c=c & sp2(container,obj.container,r,op)
c=c & sp2(document,obj.document,r,op)
c=c & sp2(fullname,obj.fullname,r,op)
c=c & sp2(fullscreen,obj.fullscreen,rw,op)
c=c & sp2(height,obj.height,rw,op)
c=c & sp2(hwnd,obj.hwnd,r,op)
c=c & sp2(left,obj.left,rw,op)
c=c & sp2(locationname,obj.locationname,r,op)
c=c & sp2(locationurl,obj.locationurl,r,op)
c=c & sp2(menubar,obj.menubar,rw,op)
c=c & sp2(name,obj.name,r,op) 'microsoft internet explorer
c=c & sp2(offline,obj.offline,rw,op)
c=c & sp2(parent,obj.parent,r,op)
c=c & sp2(path,obj.path,r,op)
c=c & sp2(readystate,obj.readystate,r,op)
'readystate_uninitialized=0
'readystate_loading=1
'readystate_loaded=2
'readystate_interactive=3
'readystate_complete=4
c=c & sp2(registerasbrowser,obj.registerasbrowser,rw,op)
c=c & sp2(registerasdroptarget,obj.registerasdroptarget,rw,op)
c=c & sp2(resizable,obj.resizable,rw,op)
c=c & sp2(silent,obj.silent,rw,op)
c=c & sp2(statusbar,obj.statusbar,rw,op)
c=c & sp2(statustext,obj.statustext,rw,op)
c=c & sp2(theatermode,obj.theatermode,rw,op)
c=c & sp2(toolbar,obj.toolbar,rw,op)
c=c & sp2(top,obj.top,rw,op)
c=c & sp2(toplevelcontainer,obj.toplevelcontainer,r,op)
on error resume next
c=c & sp2(type,obj.type,r,op) 'document html
on error goto 0
c=c & sp2(visible,obj.visible,rw,op)
c=c & sp2(width,obj.width,rw,op)
c=c & sp(goback,0,op,navigates to the previous item in the history list)
c=c & sp(goforward,0,op,navigates to the next item in the history list)
c=c & sp(gohome,0,op,go home/start page)
c=c & sp(gosearch,0,op,go search page)
c=c & sp(navigate,3,op,navigates to a url or file(url[,flags][,targetframename]))
c=c & sp(refresh,0,op,refresh the currently viewed page)
c=c & sp(refresh2,1,op,refresh the currently viewed page([level]))
c=c & sp(stop,0,op,stops opening a file)
c=c & sp(quit,0,op,exits application and closes the open document)
'clienttowindow, getproperty, querystatuswb, execwb
c=c & sp(putproperty,0,op,associates value with the name property in the context of the object(property,value))
c=c & sp(navigate2,3,op,navigates to a url or file or pidl (url[,flags][,targetframename]))
c=c & sp(showbrowserbar,3,op,set browserbar to clsid (clsid[,show][,size]))
case ishellfolderviewdual 'explorer
c=c & sp2(application,obj.application,r,op)
c=c & sp2(folder,obj.folder,r,op)
on error resume next
c=c & sp2(parent,obj.parent,r,op)
on error goto 0
c=c & sp2(selecteditems,obj.selecteditems,r,op)
c=c & sp2(focuseditem,obj.focuseditem,r,op)
c=c & sp2(script,obj.script,r,op)
c=c & sp2(viewoptions,obj.viewoptions,r,op)
c=c & sp(selectitem,2,op,select the item (pvfi,flags))
'popupitemmenu
case ishellfolderviewdual2 'explorer en ftp
c=c & sp2(application,obj.application,r,op)
c=c & sp2(folder,obj.folder,r,op)
on error resume next
c=c & sp2(parent,obj.parent,r,op)
c=c & sp2(selecteditems,obj.selecteditems,r,op)
c=c & sp2(focuseditem,obj.focuseditem,r,op)
c=c & sp2(script,obj.script,r,op)
c=c & sp2(viewoptions,obj.viewoptions,r,op)
c=c & sp2(currentviewmode,obj.currentviewmode,rw,op)
on error goto 0
c=c & sp(selectitem,2,op,select the item (pvfi,flags))
c=c & sp(selectitemrelative,1,op,select item relative to the current item (irelative))
'popupitemmenu
case folder3
c=c & sp2(application,obj.application,r,op)
c=c & sp2(havetoshowwebviewbarricade,obj.havetoshowwebviewbarricade,r,op)
c=c & sp2(items,obj.items,r,op)
on error resume next
c=c & sp2(parent,obj.parent,r,op)
on error goto 0
c=c & sp2(offlinestatus,obj.offlinestatus,r,op)
c=c & sp2(parentfolder,obj.parentfolder,r,op)
c=c & sp2(self,obj.self,r,op)
c=c & sp2(showwebviewbarricade,obj.showwebviewbarricade,rw,op)
c=c & sp2(title,obj.title,r,op)
'parsename, getdetailsof
c=c & sp(newfolder,2,op,create a new sub folder in this folder (name[,options]))
c=c & sp(movehere,2,op,move items to this folder (item[,options]))
c=c & sp(copyhere,2,op,copy items to this folder (item[,options]))
c=c & sp(synchronize,0,op,synchronize all offline files)
c=c & sp(dismissedwebviewbarricade,0,op,call this after the webview barricade is dismissed by the user)
case folderitem2
c=c & sp2(application,obj.application,r,op)
if obj.islink then c=c & sp2(getlink,obj.getlink,r,op)
if obj.isfolder then c=c & sp2(getfolder,obj.getfolder,r,op)
c=c & sp2(isbrowsable,obj.isbrowsable,r,op)
c=c & sp2(isfilesystem,obj.isfilesystem,r,op)
c=c & sp2(isfolder,obj.isfolder,r,op)
c=c & sp2(islink,obj.islink,r,op)
c=c & sp2(modifydate,obj.modifydate,rw,op)
c=c & sp2(name,obj.name,rw,op)
c=c & sp2(parent,obj.parent,r,op)
c=c & sp2(path,obj.path,r,op)
c=c & sp2(size,obj.size,r,op)
c=c & sp2(type,obj.type,r,op)
c=c & sp2(verbs,obj.verbs,r,op)
c=c & sp(invokeverb,1,op,execute a command on the item ([verb]))
c=c & sp(invokeverbex,2,op,extended version of invokeverb ([verb][,args]))
'extendedproperty
case folderitemverbs
on error resume next
c=c & sp2(application,obj.application,r,op)
c=c & sp2(parent,obj.parent,r,op)
on error goto 0
c=c & sp2(count,obj.count,r,op)
for x=0 to obj.count-1
c=c & sp2(item( & x & ),obj.item(x),r,op)
next
case folderitemverb
on error resume next
c=c & sp2(application,obj.application,r,op)
c=c & sp2(parent,obj.parent,r,op)
on error goto 0
c=c & sp2(name,obj.name,r,op)
c=c & sp(doit,0,op,execute the verb)
case folderitems3
on error resume next
c=c & sp2(application,obj.application,r,op)
c=c & sp2(parent,obj.parent,r,op)
on error goto 0
c=c & sp2(count,obj.count,r,op)
for x=0 to obj.count-1
c=c & sp2(item( & x & ),obj.item(x),r,op)
next
c=c & sp2(verbs,obj.verbs,r,op)
c=c & sp(invokeverbex,2,op,extended version of invokeverb for a collection of folder items([verb][,args]))
c=c & sp(filter,2,op,set a wildcard filter to apply to the items returned ([flags][,filespec]))
case htmlwindow2 'script ihtmlwindow2
c=c & sp2(clientinformation,obj.clientinformation,r,op)
c=c & sp2(clipboarddata,obj.clipboarddata,r,op)
c=c & sp2(closed,obj.closed,r,op)
c=c & sp2(defaultstatus,obj.defaultstatus,rw,op)
c=c & sp2(document,obj.document,r,op)
c=c & sp2(event,obj.event,r,op)
c=c & sp2(external,obj.external,r,op)
c=c & sp2(frames,obj.frames,r,op)
c=c & sp2(history,obj.history,r,op)
c=c & sp2(image,obj.image,r,op)
'c=c & sp2(item,obj.item,r,op)
for x=0 to obj.length-1
c=c & sp2(item( & x & ),obj.item(x),r,op)
next
c=c & sp2(length,obj.length,r,op)
c=c & sp2(location,obj.location,r,op)
c=c & sp2(name,obj.name,rw,op)
c=c & sp2(navigator,obj.navigator,r,op)
c=c & sp2(offscreenbuffering,obj.offscreenbuffering,rw,op)
c=c & sp2(onafterprint,obj.onafterprint,rw,op)
c=c & sp2(onbeforeprint,obj.onbeforeprint,rw,op)
c=c & sp2(onbeforeunload,obj.onbeforeunload,rw,op)
c=c & sp2(onblur,obj.onblur,rw,op)
c=c & sp2(onerror,obj.onerror,rw,op)
c=c & sp2(onfocus,obj.onfocus,rw,op)
c=c & sp2(onhelp,obj.onhelp,rw,op)
c=c & sp2(onload,obj.onload,rw,op)
c=c & sp2(onresize,obj.onresize,rw,op)
c=c & sp2(onscroll,obj.onscroll,rw,op)
c=c & sp2(onunload,obj.onunload,rw,op)
c=c & sp2(opener,obj.opener,rw,op)
c=c & sp2(option,obj.option,r,op)
c=c & sp2(parent,obj.parent,r,op)
c=c & sp2(screen,obj.screen,r,op)
c=c & sp2(screenleft,obj.screenleft,r,op)
c=c & sp2(screentop,obj.screentop,r,op)
c=c & sp2(self,obj.self,r,op)
c=c & sp2(status,obj.status,rw,op)
c=c & sp2(top,obj.top,r,op)
c=c & sp2(tostring,obj.tostring,r,op)
c=c & sp2(window,obj.window,r,op)
'settimeout, confirm, prompt, open, setinterval
c=c & sp(alert,1,op,(message))
c=c & sp(blur,0,op,)
c=c & sp(clearinterval,1,op,(timerid))
c=c & sp(cleartimeout,1,op,(timerid))
c=c & sp(close,0,op,)
c=c & sp(execscript,2,op,(code[,language]))
c=c & sp(focus,0,op,)
c=c & sp(moveby,2,op,(x,y))
c=c & sp(moveto,2,op,(x,y))
c=c & sp(navigate,1,op,(url))
c=c & sp(resizeby,2,op,(x,y))
c=c & sp(resizeto,2,op,(x,y))
c=c & sp(scroll,2,op,(x,y))
c=c & sp(scrollby,2,op,(x,y))
c=c & sp(scrollto,2,op,(x,y))
c=c & sp(showhelp,3,op,(url,arg,features))
c=c & sp(showmodaldialog,3,op,(dialog,argin,options))
case htmldocument 'disphtmldocument ou ihtmldocument#
c=c & sp2(activeelement,obj.activeelement,r,op)
c=c & sp2(alinkcolor,obj.alinkcolor,rw,op)
c=c & sp2(all,obj.all,r,op)
c=c & sp2(anchors,obj.anchors,r,op)
c=c & sp2(applets,obj.applets,r,op)
on error resume next
c=c & sp2(baseurl,obj.baseurl,rw,op)
on error goto 0
c=c & sp2(bgcolor,obj.bgcolor,rw,op)
c=c & sp2(body,obj.body,r,op)
c=c & sp2(charset,obj.charset,rw,op)
c=c & sp2(childnodes,obj.childnodes,rw,op)
c=c & sp2(cookie,obj.cookie,rw,op)
c=c & sp2(defaultcharset,obj.defaultcharset,rw,op)
c=c & sp2(designmode,obj.designmode,rw,op)
c=c & sp2(dir,obj.dir,rw,op)
c=c & sp2(documentelement,obj.documentelement,r,op)
c=c & sp2(domain,obj.domain,rw,op)
on error resume next
c=c & sp2(enabledownload,obj.enabledownload,rw,op)
on error goto 0
c=c & sp2(embeds,obj.embeds,r,op)
c=c & sp2(expando,obj.expando,rw,op)
c=c & sp2(fgcolor,obj.fgcolor,rw,op)
on error resume next
c=c & sp2(filesize,obj.filesize,r,op)
c=c & sp2(filecreateddate,obj.filecreateddate,r,op)
c=c & sp2(filemodifieddate,obj.filemodifieddate,r,op)
on error goto 0
c=c & sp2(fileupdateddate,obj.fileupdateddate,r,op)
c=c & sp2(forms,obj.forms,r,op)
c=c & sp2(frames,obj.frames,r,op)
on error resume next
for x=0 to obj.frames.length-1
'if obj.frames(x).name<> then
' c=c & sp2(frames( & obj.frames(x).name & ),obj.frames(x),r,op)
'else
c=c & sp2(frames( & x & ),obj.frames(x),r,op)
'end if
next
on error goto 0
c=c & sp2(hasfocus,obj.hasfocus,r,op)
c=c & sp2(images,obj.images,r,op)
on error resume next
c=c & sp2(inheritstylesheets,obj.inheritstylesheets,rw,op)
on error goto 0
c=c & sp2(lastmodified,obj.lastmodified,r,op)
c=c & sp2(linkcolor,obj.linkcolor,rw,op)
c=c & sp2(links,obj.links,r,op)
c=c & sp2(location,obj.location,r,op)
c=c & sp2(media,obj.media,rw,op)
on error resume next
c=c & sp2(mimetype,obj.mimetype,r,op)
on error goto 0
c=c & sp2(nameprop,obj.nameprop,r,op)
on error resume next
c=c & sp2(namespaces,obj.namespaces,r,op)
on error goto 0
c=c & sp2(onafterupdate,obj.onafterupdate,rw,op)
c=c & sp2(onbeforeeditfocus,obj.onbeforeeditfocus,rw,op)
c=c & sp2(onbeforeupdate,obj.onbeforeupdate,rw,op)
c=c & sp2(oncellchange,obj.oncellchange,rw,op)
c=c & sp2(onclick,obj.onclick,rw,op)
c=c & sp2(oncontextmenu,obj.oncontextmenu,rw,op)
c=c & sp2(oncontrolselect,obj.oncontrolselect,rw,op)
c=c & sp2(ondataavailable,obj.ondataavailable,rw,op)
c=c & sp2(ondatasetchanged,obj.ondatasetchanged,rw,op)
c=c & sp2(ondatasetcomplete,obj.ondatasetcomplete,rw,op)
c=c & sp2(ondblclick,obj.ondblclick,rw,op)
c=c & sp2(ondragstart,obj.ondragstart,rw,op)
c=c & sp2(onerrorupdate,obj.onerrorupdate,rw,op)
c=c & sp2(onhelp,obj.onhelp,rw,op)
c=c & sp2(onkeydown,obj.onkeydown,rw,op)
c=c & sp2(onkeypress,obj.onkeypress,rw,op)
c=c & sp2(onkeyup,obj.onkeyup,rw,op)
c=c & sp2(onmousedown,obj.onmousedown,rw,op)
c=c & sp2(onmousemove,obj.onmousemove,rw,op)
c=c & sp2(onmouseout,obj.onmouseout,rw,op)
c=c & sp2(onmouseover,obj.onmouseover,rw,op)
c=c & sp2(onmouseup,obj.onmouseup,rw,op)
c=c & sp2(onpropertychange,obj.onpropertychange,rw,op)
c=c & sp2(onreadystatechange,obj.onreadystatechange,rw,op)
c=c & sp2(onrowenter,obj.onrowenter,rw,op)
c=c & sp2(onrowexit,obj.onrowexit,rw,op)
c=c & sp2(onrowsdelete,obj.onrowsdelete,rw,op)
c=c & sp2(onrowsinserted,obj.onrowsinserted,rw,op)
c=c & sp2(onselectionchange,obj.onselectionchange,rw,op)
c=c & sp2(onselectstart,obj.onselectstart,rw,op)
c=c & sp2(onstop,obj.onstop,rw,op)
on error resume next
c=c & sp2(parentdocument,obj.parentdocument,r,op)
on error goto 0
c=c & sp2(parentwindow,obj.parentwindow,r,op)
c=c & sp2(plugins,obj.plugins,r,op)
c=c & sp2(protocol,obj.protocol,r,op)
c=c & sp2(readystate,obj.readystate,r,op)
c=c & sp2(referrer,obj.referrer,r,op)
c=c & sp2(security,obj.security,r,op)
c=c & sp2(selection,obj.selection,r,op)
c=c & sp2(script,obj.script,r,op)
c=c & sp2(scripts,obj.scripts,r,op)
c=c & sp2(stylesheets,obj.stylesheets,r,op)
c=c & sp2(title,obj.title,rw,op)
c=c & sp2(tostring,obj.tostring,r,op)
c=c & sp2(uniqueid,obj.uniqueid,r,op)
c=c & sp2(url,obj.url,rw,op)
c=c & sp2(urlunencoded,obj.urlunencoded,rw,op)
c=c & sp2(vlinkcolor,obj.vlinkcolor,rw,op)
'createdocumentfromurl, createeventobject, fireevent, createrenderstyle
'createtextnode, attachevent, detachevent, createdocumentfragment
'getelementsbyname, getelementbyid, getelementsbytagname, open
'querycommandsupported, querycommandenabled, querycommandstate
'querycommandindeterm, querycommandtext, querycommandvalue, execcommand
'execcommandshowhelp, createelement, elementfrompoint, createstylesheet
c=c & sp(clear,0,op,)
c=c & sp(close,0,op,)
c=c & sp(focus,0,op,)
c=c & sp(releasecapture,0,op,)
c=c & sp(recalc,1,op,(bforce))
c=c & sp(write,1,op,(psarray))
c=c & sp(writeln,1,op,(psarray))
case ihtmlscreen 'script.screen
c=c & sp2(availheight,obj.availheight,r,op)
c=c & sp2(availwidth,obj.availwidth,r,op)
c=c & sp2(bufferdepth,obj.bufferdepth,rw,op)
c=c & sp2(colordepth,obj.colordepth,r,op)
c=c & sp2(fontsmoothingenabled,obj.fontsmoothingenabled,r,op)
c=c & sp2(height,obj.height,r,op)
c=c & sp2(updateinterval,obj.updateinterval,rw,op)
c=c & sp2(width,obj.width,r,op)
case ihtmllocation 'script.location
c=c & sp2(hash,obj.hash,rw,op)
c=c & sp2(host,obj.host,rw,op)
c=c & sp2(hostname,obj.hostname,rw,op)
c=c & sp2(href,obj.href,rw,op)
c=c & sp2(pathname,obj.pathname,rw,op)
c=c & sp2(port,obj.port,rw,op)
c=c & sp2(protocol,obj.protocol,rw,op)
c=c & sp2(search,obj.search,rw,op)
c=c & sp2(tostring,obj.tostring,r,op)
c=c & sp(reload,1,op,([flag]))
c=c & sp(replace,1,op,(str))
c=c & sp(asign,1,op,(str))
case ihtmlimageelementfactory,ihtmloptionelementfactory 'script.image
'1 method create, no property
case ihtmldatatransfer 'clipboard
c=c & sp2(dropeffect,obj.dropeffect,rw,op)
c=c & sp2(effectallowed,obj.effectallowed,rw,op)
'setdata, getdata,cleardata
case htmlnavigator 'iomnavigator : script.navigator
c=c & sp2(appcodename,obj.appcodename,r,op)
c=c & sp2(appname,obj.appname,r,op)
c=c & sp2(appminorversion,obj.appminorversion,r,op)
c=c & sp2(appversion,obj.appversion,r,op)
c=c & sp2(browserlanguage,obj.browserlanguage,r,op)
on error resume next
c=c & sp2(connectionspeed,obj.connectionspeed,r,op)
on error goto 0
c=c & sp2(cookieenabled,obj.cookieenabled,r,op)
c=c & sp2(cpuclass,obj.cpuclass,r,op)
c=c & sp2(javaenabled,obj.javaenabled,r,op)
c=c & sp2(mimetypes,obj.mimetypes,r,op)
c=c & sp2(online,obj.online,r,op)
c=c & sp2(opsprofile,obj.opsprofile,r,op)
c=c & sp2(platform,obj.platform,r,op)
c=c & sp2(plugins,obj.plugins,r,op)
c=c & sp2(systemlanguage,obj.systemlanguage,r,op)
c=c & sp2(taintenabled,obj.taintenabled,r,op)
c=c & sp2(tostring,obj.tostring,r,op)
c=c & sp2(useragent,obj.useragent,r,op)
c=c & sp2(userlanguage,obj.userlanguage,r,op)
c=c & sp2(userprofile,obj.userprofile,r,op)
case iomhistory
c=c & sp2(length,obj.length,r,op)
c=c & sp(back,1,op,([distance]))
c=c & sp(go,1,op,([distance]))
c=c & sp(forward,1,op,([distance]))
case cmimetypes 'script.navigator.mimetypes ihtmlmimetypescollection
c=c & sp2(length,obj.length,r,op)
case cplugins 'script.navigator.plugins ihtmlpluginscollection
c=c & sp2(length,obj.length,r,op)
c=c & sp(refresh,1,op,([reload]))
case copsprofile 'script.navigator.opsprofile ihtmlopsprofile
'addrequest, getattribute, setattribute, commitchanges
'addreadrequest, doreadrequest,dowriterequest
c=c & sp(clearrequest,0,op,)
c=c & sp(dorequest,3,op,(usage[,fname][,domain]))
case disphtmlelementcollection 'all, applets, forms...
for x=0 to obj.length-1
c=c & sp2(item( & x & ),obj.item(x),r,op)
next
c=c & sp2(length,obj.length,rw,op)
c=c & sp2(tostring,obj.tostring,r,op)
c=c & sp2(tags,obj.tags(),r,op)
c=c & sp2(urns,obj.urns(),r,op)
case htmlframesetsite, htmltitleelement, htmlframeelement, htmlhtmlelement,_
htmlheadelement, htmlscriptelement, htmlcommentelement
'disp/ihtmlxxx
on error resume next
c=c & sp2(accesskey,obj.accesskey,rw,op)
c=c & sp2(all,obj.all,r,op)
c=c & sp2(allowtransparency,obj.allowtransparency,rw,op)
c=c & sp2(atomic,obj.atomic,rw,op)
c=c & sp2(attributes,obj.attributes,r,op)
c=c & sp2(behaviorurns,obj.behaviorurns,r,op)
c=c & sp2(border,obj.border,rw,op)
c=c & sp2(bordercolor,obj.bordercolor,rw,op)
c=c & sp2(canhavechildren,obj.canhavechildren,r,op)
c=c & sp2(canhavehtml,obj.canhavehtml,r,op)
c=c & sp2(childnodes,obj.childnodes,r,op)
c=c & sp2(children,obj.children,r,op)
c=c & sp2(classname,obj.classname,rw,op)
c=c & sp2(clientheight,obj.clientheight,r,op)
c=c & sp2(clientleft,obj.clientleft,r,op)
c=c & sp2(clienttop,obj.clienttop,r,op)
c=c & sp2(clientwidth,obj.clientwidth,r,op)
c=c & sp2(cols,obj.cols,rw,op)
c=c & sp2(contenteditable,obj.contenteditable,rw,op)
c=c & sp2(contentwindow,obj.contentwindow,r,op) 'frame
c=c & sp2(createcontrolrange,obj.createcontrolrange,r,op)
c=c & sp2(currentstyle,obj.currentstyle,r,op)
c=c & sp2(datafld,obj.datafld,rw,op) 'htmlframeelement
c=c & sp2(dataformatas,obj.dataformatas,rw,op)
c=c & sp2(datasrc,obj.datasrc,rw,op)
c=c & sp2(defer,obj.defer,rw,op)
c=c & sp2(disabled,obj.disabled,rw,op)
c=c & sp2(dir,obj.dir,rw,op)
c=c & sp2(document,obj.document,r,op)
c=c & sp2(dragdrop,obj.dragdrop,r,op)
c=c & sp2(event,obj.event,rw,op) 'script
c=c & sp2(filters,obj.filters,r,op)
c=c & sp2(firstchild,obj.firstchild,r,op)
c=c & sp2(frameborder,obj.frameborder,rw,op)
c=c & sp2(framespacing,obj.framespacing,rw,op)
c=c & sp2(getboundingclientrect,obj.getboundingclientrect,r,op)
c=c & sp2(getclientrects,obj.getclientrects,r,op)
'c=c & sp2(glyphmode,obj.glyphmode,r,op) 'restricted
c=c & sp2(haschildnodes,obj.haschildnodes,r,op)
c=c & sp2(height,obj.height,rw,op)
c=c & sp2(hidefocus,obj.hidefocus,rw,op)
c=c & sp2(htmlfor,obj.htmlfor,rw,op) 'script
c=c & sp2(id,obj.id,rw,op)
c=c & sp2(iscontenteditable,obj.iscontenteditable,r,op)
c=c & sp2(isdisabled,obj.isdisabled,r,op)
c=c & sp2(ismultiline,obj.ismultiline,r,op)
c=c & sp2(istextedit,obj.istextedit,r,op)
c=c & sp2(innerhtml,obj.innerhtml,rw,op)
c=c & sp2(innertext,obj.innertext,rw,op)
c=c & sp2(lang,obj.lang,rw,op)
c=c & sp2(language,obj.language,rw,op)
c=c & sp2(lastchild,obj.lastchild,r,op)
c=c & sp2(marginheight,obj.marginheight,rw,op)
c=c & sp2(marginwidth,obj.marginwidth,rw,op)
c=c & sp2(name,obj.name,rw,op)
c=c & sp2(nextsibling,obj.nextsibling,r,op)
c=c & sp2(nodename,obj.nodename,r,op)
c=c & sp2(nodevalue,obj.nodevalue,rw,op)
c=c & sp2(nodetype,obj.nodetype,r,op)
c=c & sp2(noresize,obj.noresize,rw,op)
c=c & sp2(offsetheight,obj.offsetheight,r,op)
c=c & sp2(offsetleft,obj.offsetleft,r,op)
c=c & sp2(offsetparent,obj.offsetparent,r,op)
c=c & sp2(offsettop,obj.offsettop,r,op)
c=c & sp2(offsetwidth,obj.offsetwidth,r,op)
c=c & sp2(onactivate,obj.onactivate,rw,op)
c=c & sp2(onafterprint,obj.onafterprint,rw,op)
c=c & sp2(onafterupdate,obj.onafterupdate,rw,op)
c=c & sp2(onbeforecopy,obj.onbeforecopy,rw,op)
c=c & sp2(onbeforecut,obj.onbeforecut,rw,op)
c=c & sp2(onbeforedeactivate,obj.onbeforedeactivate,rw,op)
c=c & sp2(onbeforeeditfocus,obj.onbeforeeditfocus,rw,op)
c=c & sp2(onbeforepaste,obj.onbeforepaste,rw,op)
c=c & sp2(onbeforeprint,obj.onbeforeprint,rw,op)
c=c & sp2(onbeforeunload,obj.onbeforeunload,rw,op)
c=c & sp2(onbeforeupdate,obj.onbeforeupdate,rw,op)
c=c & sp2(onblur,obj.onblur,rw,op)
c=c & sp2(oncellchange,obj.oncellchange,rw,op)
c=c & sp2(onclick,obj.onclick,rw,op)
c=c & sp2(oncontextmenu,obj.oncontextmenu,rw,op)
c=c & sp2(oncontrolselect,obj.oncontrolselect,rw,op)
c=c & sp2(oncopy,obj.oncopy,rw,op)
c=c & sp2(oncut,obj.oncut,rw,op)
c=c & sp2(ondataavailable,obj.ondataavailable,rw,op)
c=c & sp2(ondatasetchanged,obj.ondatasetchanged,rw,op)
c=c & sp2(ondatasetcomplete,obj.ondatasetcomplete,rw,op)
c=c & sp2(ondblclick,obj.ondblclick,rw,op)
c=c & sp2(ondeactivate,obj.ondeactivate,rw,op)
c=c & sp2(ondrag,obj.ondrag,rw,op)
c=c & sp2(ondragend,obj.ondragend,rw,op)
c=c & sp2(ondragenter,obj.ondragenter,rw,op)
c=c & sp2(ondragleave,obj.ondragleave,rw,op)
c=c & sp2(ondragover,obj.ondragover,rw,op)
c=c & sp2(ondragstart,obj.ondragstart,rw,op)
c=c & sp2(ondrop,obj.ondrop,rw,op)
c=c & sp2(onerror,obj.onerror,rw,op) 'script
c=c & sp2(onerrorupdate,obj.onerrorupdate,rw,op)
c=c & sp2(onfilterchange,obj.onfilterchange,rw,op)
c=c & sp2(onfocus,obj.onfocus,rw,op)
c=c & sp2(onhelp,obj.onhelp,rw,op)
c=c & sp2(onkeydown,obj.onkeydown,rw,op)
c=c & sp2(onkeypress,obj.onkeypress,rw,op)
c=c & sp2(onkeyup,obj.onkeyup,rw,op)
c=c & sp2(onlayoutcomplete,obj.onlayoutcomplete,rw,op)
c=c & sp2(onlosecapture,obj.onlosecapture,rw,op)
c=c & sp2(onload,obj.onload,rw,op)
c=c & sp2(onmove,obj.onmove,rw,op)
c=c & sp2(onmoveend,obj.onmoveend,rw,op)
c=c & sp2(onmovestart,obj.onmovestart,rw,op)
c=c & sp2(onmousedown,obj.onmousedown,rw,op)
c=c & sp2(onmouseenter,obj.onmouseenter,rw,op)
c=c & sp2(onmouseleave,obj.onmouseleave,rw,op)
c=c & sp2(onmousemove,obj.onmousemove,rw,op)
c=c & sp2(onmouseout,obj.onmouseout,rw,op)
c=c & sp2(onmouseover,obj.onmouseover,rw,op)
c=c & sp2(onmouseup,obj.onmouseup,rw,op)
c=c & sp2(onpage,obj.onpage,rw,op)
c=c & sp2(onpaste,obj.onpaste,rw,op)
c=c & sp2(onpropertychange,obj.onpropertychange,rw,op)
c=c & sp2(onreadystatechange,obj.onreadystatechange,rw,op)
c=c & sp2(onresize,obj.onresize,rw,op)
c=c & sp2(onresizeend,obj.onresizeend,rw,op)
c=c & sp2(onresizestart,obj.onresizestart,rw,op)
c=c & sp2(onrowenter,obj.onrowenter,rw,op)
c=c & sp2(onrowexit,obj.onrowexit,rw,op)
c=c & sp2(onrowsdelete,obj.onrowsdelete,rw,op)
c=c & sp2(onrowsinserted,obj.onrowsinserted,rw,op)
c=c & sp2(onscroll,obj.onscroll,rw,op)
c=c & sp2(onselectstart,obj.onselectstart,rw,op)
c=c & sp2(outerhtml,obj.outerhtml,rw,op)
c=c & sp2(outertext,obj.outertext,rw,op)
c=c & sp2(onunload,obj.onunload,rw,op)
c=c & sp2(parentelement,obj.parentelement,r,op)
c=c & sp2(parentnode,obj.parentnode,r,op)
c=c & sp2(parenttextedit,obj.parenttextedit,r,op)
c=c & sp2(previoussibling,obj.previoussibling,r,op)
c=c & sp2(recordnumber,obj.recordnumber,r,op)
c=c & sp2(readystate,obj.readystate,r,op)
c=c & sp2(rows,obj.rows,rw,op)
c=c & sp2(runtimestyle,obj.runtimestyle,r,op)
c=c & sp2(scopename,obj.scopename,r,op)
c=c & sp2(scrollheight,obj.scrollheight,r,op)
c=c & sp2(scrolling,obj.scrolling,rw,op) 'frame
c=c & sp2(scrollleft,obj.scrollleft,r,op)
c=c & sp2(scrolltop,obj.scrolltop,r,op)
c=c & sp2(scrollwidth,obj.scrollwidth,r,op)
c=c & sp2(sourceindex,obj.sourceindex,r,op)
c=c & sp2(src,obj.src,rw,op)
c=c & sp2(style,obj.style,r,op)
c=c & sp2(tagname,obj.tagname,r,op)
c=c & sp2(tagurn,obj.tagurn,rw,op)
c=c & sp2(tabindex,obj.tabindex,rw,op)
c=c & sp2(text,obj.text,rw,op) 'title, script
c=c & sp2(title,obj.title,rw,op)
c=c & sp2(type,obj.type,rw,op)
c=c & sp2(tostring,obj.tostring,r,op)
c=c & sp2(uniqueid,obj.uniqueid,r,op)
c=c & sp2(uniquenumber,obj.uniquenumber,r,op)
c=c & sp2(width,obj.width,rw,op)
'getattribute, removeattribute, contains, componentfrompoint, getexpression
'removeexpression, addfilter, removefilter,attachevent,detachevent
'insertadjacentelement, applyelement, getadjacenttext, replaceadjacenttext
'addbehavior, removebehavior, getelementsbytagname, mergeattributes
'fireevent, insertbefore, removechild, replacechild, clonenode, removenode
'swapnode, replacenode, appendchild
c=c & sp(blur,0,op,)
c=c & sp(clearattributes,0,op,)
c=c & sp(click,0,op,)
c=c & sp(doscroll,1,op,([component]))
c=c & sp(focus,0,op,)
c=c & sp(insertadjacenthtml,1,op,(where,html))
c=c & sp(insertadjacenttext,1,op,(where,text))
c=c & sp(scrollintoview,1,op,(argstart))
c=c & sp(setactive,0,op,)
c=c & sp(setattribute,3,op,(attrname,attrval[,flags]))
c=c & sp(setcapture,1,op,([containercapture]))
c=c & sp(setexpression,3,op,(propname,expression[,language]))
c=c & sp(releasecapture,0,op,)
on error goto 0
'case htmlimg
' on error resume next
' for x=0 to obj.attributes.length-1
' c=c & sp2(obj.attributes(x).nodename,eval(obj. & obj.attributes(x).nodename),r,op)
' ' if instr(b.attributes(x).nodevalue,dosubmit()>0 then
' ' chaine=mid(b.attributes(x).nodevalue,instr(b.attributes(x).nodevalue,dosubmit())
' ' 'msgbox b.attributes(x).nodename & = & b.attributes(x).nodevalue
' ' end if
' next
' on error goto 0
'case dispdomchildrencollection 'childnodes
'case object 'frames.external
'case ihtmlnamespacecollection 'document.namespaces
'case ihtmlselectionobject 'document.selection
'case ihtmlstylesheetscollection 'document.stylesheets
'case htmlheadelement
'case htmlnoshowelement 'document.all.item(?)
'case ihtmlfilterscollection
'case disphtmlcurrentstyle
'case ihtmlrectcollection
'case disphtmlstyle
'case ihtmlrect
'case ihtmlurncollection
'case htmlobjectelement 'applet
'htmlbody
'htmlheaderelement
'htmlphraseelement
'htmlbrelement
'htmlblockelement
'htmlhrelement
'htmlparaelement
'htmltable
'htmltablesection
'htmltablerow
'htmltablecell
'htmlfontelement
'htmlanchorelement
'case disphtmlattributecollection
'case
'case
case else
c=c & <b>unknown typename : & typename(obj) & </b>
end select
c=c & </table>
prop.innerhtml=c
end sub
</script>
<style type=text/css>
<!--
body {
font-family: verdana, arial, helvetica, sans-serif;
background-color=#001122;
color:#ffccff;
font-size: 8pt;
}
a {color:#aaffcc}
button {font-size: 7pt;cursor:hand;}
table.prop {font-size: 8pt;color:#aaccff;}
table.param {font-size: 8pt;color:#aaccff;}
-->
</style>
</head>
<body>
<table class=param><tr>
<td><button onclick='vbscript:showprop shapp.windows,shapp.windows'>
init </button></td>
<td><input type=checkbox name=hidenull
title=hide null values and objects set to nothing checked=true>hide null values</td>
</tr></table>
<div id=prop></div>
</body>
</html>