关于 PowerBand 的一些说明

=============================

 

文档大纲:

1.PowerBand是什么

2.对系统环境的要求

3.安装与反安装

4.外挂脚本环境使用说明

5.使用技巧

6.存在的不足

7.版本历史

8.常见问题回答

9.使用许可

10.关于作者

11.结语

 

1.PowerBand 是什么

      PowerBand是一个Internet Explorer的插件。提供了对HTML动态分析,跟踪,编辑的功能。如果您经常要和HTML打交道,而且长期为之头痛,那么这个东西能够帮助你,并有效减轻您的症状。当面对一个复杂的HTML页面,你想要分析它的结构,面对着茫茫的,混乱的HTML代码,您是否觉得自己很无助?让PowerBand来帮助您吧,您可以去松一口气了。当刚写的一个HTML页面总是不按照您所想的那样显示内容时,您最想做的是什么呢?现在不需要再苦恼了,让PowerBand来帮助您吧,您可以去松一口气了。PowerBand提供了方便而又强大的HTML分析能力,帮助您消灭晦涩的HTML代码给您带来的很多麻烦,它会成您的好朋友,不是吗?

      除了上面所说的以外,还因为一时兴趣所至,提供了杀除弹出广告窗口的功能,当然,效果不是特别好,偶尔会有一些漏网,但足以应付大多数令人生厌的广告窗口。

 

2.对系统环境的要求

      希望您有一台体面的计算机,操作系统是Windows98/ME/NT/2000/XP/2003 Server 都可以,Windows95将会需要更新许多的系统部件,所以建议您还不如装一套新的Window98或是WindowsXP,而Internet Explorer浏览器则是必须的,版本最好不要低于5.5,不然提供的就地编辑功能将无法使用。

 

3.安装与反安装

      将所有的文件拷贝至任意目录下,先关闭所有打开着的Internet Explorer窗口,然后使用自带的install.bat进行安装即可。或者也可以在命令行下通过手工输入如下命令来安装。

      c:\regsvr32.exe PowerBand.dll

 

      接下来,打开新的Internet Explorer窗口,您可以从菜单[查看]->浏览器工具中,选择子菜单中的PowerBand,或者直接按下IE工具条上PowerBand所对应的按钮,因为出于使用便捷的考虑,特意为IE添加了一个对应PowerBand的工具栏按钮。然后,您就可以开始享用本软件了。

  

      如果您要反安装的话只要使用uninstall.bat进行反安装即可。或者也可以在命令行下通过手工输入如下命令来反装

 

      c:\regsvr32.exe /u PowerBand.dll

 

      然后,就可以安全的删除PowerBand程序文件。

 

4.外挂脚本环境使用说明

 

            PowerBand支持VBScriptJscript两种脚本语言。关于脚本语言的详细语法请参考MSDN网站的相关文档。本部分只就PowerBand所提供的扩展功能进行说明。

 

          PowerBand提供了IE PBScripting两个扩展对象来帮助你方便的使用。下面是两个扩展对象所提供的属性和方法的列表。其中,IE对象只是对于InternetExplorer COM组件对象的一个引用,详细的说明请参考微软的官方文档,而PBScripting对象是PowerBand所提供的一个扩展功能对象。

 

IE对象

http://msdn.microsoft.com/workshop/browser/webbrowser/reference/objects/internetexplorer.asp

           

PBScripting对象

方法

说明

CreateObject(ProgID)

根据ProgID创建对象

RunScriptCode(strCode)

运行一段指定的脚本代码

RunScriptFile(strFileName)

指定脚本文件名,并运行它

WriteConsole(strMessage)

将消息发往控制台

ShowMessage(strMessage)

显现一个消息提示框(因为JScript缺少像VBScript所提供的MsgBox函数)

SaveToLocalFile(strUrl, strDirPath)

把网页中的二进制内容(通过url引用)保存到本地文件夹内,包括图片,声音,文件,Flash动画,等等。

 

注:目前该方法对于url所指向的HTML文件或动态网页脚本文件(asp/aspx/jsp/php/cgi)尚未支持。

 

以上两个均为全局对象,在使用时可以省略相应的对象名,而直接调用它们的方法或访问它们的属性。

 

示例:

(VBScript)

JScript

Dim i

Dim theLink

 

For i=1 To Document.Links.Length

    Set theLink = Document.Links.Item(i-1)

    WriteConsole "Link ", theLink.href

Next

for (var i=0; i<Document.links.length; i++)

{

    var theLink = Document.links[i];

    WriteConsole(“link”, theLink.href);

}

Dim MSWord

Set MSWord = CreateObject(“Word.Basic”)

 

MSWord.AppShow()

MSWord.FileNew()

MSWord.Insert Document.Body.outerHTML

//var MSWord = new ActiveXObject(“Word.Basic”);

var MSWord = PBScripting.CreateObject(“Word.Basic”);

 

MSWord.AppShow();

MSWord.FileNew();

MSWord.Insert(Document.body.outerHTML);

Dim i

Dim ImageObject

 

For i = 0 To Document.Images.Length

     Set ImageObject = Document.Images(i)

     SaveToLocalFile ImageObject.src, “C:\Temp”

Next

for (var i=0; i<Document.images.length; i++)

{

      var theImage = Document.images[i];

      SaveToLocalFile(theImage.src, “C:\Temp”)

}

 

5.使用的技巧

 

提供了一些对您有帮助的快捷键。

 

[1]  树视图: “CTRL+ALT+S” /鼠标跟踪模式:“S”

     适用于树视图和鼠标跟踪模式可以直接查看当前节点的html源代码及相关信息。当然对于一些可读写的节点你还可以直接编辑它的HTML代码,直接在浏览器中显示所修改后带来的变化。

 

[2]  鼠标跟踪模式: “F”

     适用于鼠标跟踪模式,可以快速定位当前被跟踪的节点在DOM树中的位置。

 

[3]  树视图: “CTRL+ALT+R”

     适用于树视图上,用来刷新当前节点及其子节点的内容。

 

[4]  树视图: “CTRL+ALT+O” /鼠标跟踪模式: “O”

     适用于树视图和鼠标跟踪模式,针对页面中的Frame元素和Iframe元素,将会打开一个新窗口来显示它们所包含的页面内容。

 

[5]  树视图: “CTRL+ALT + I” /鼠标跟踪模式: “I”

     适用于树视图和鼠标跟踪模式,用来动态插入一段html代码。

 

[6] “DEL”

     适用于树视图和鼠标跟踪模式,可以直接删除当前选中的节点,比如,页面上有 一个很大块的广告在遮挡您的视线,现在可以直接把这个讨厌的东西一删而后快了。

 

[7]  树视图:“CTRL+ALT+D”

     适用于树视图上,用以切换当前节点的style.disply属性,默认在"none""block"两种状态间互相切换。

 

[8]  树视图:“CTRL+ALT+V”

     适用于树视图上,用以切换当前节点的style.visibility属性,默认在"hidden""visible"两者间互相切换。

 

对于新增脚本的说明:

      出于爱护键盘的考虑的,您在输入脚本代码时,不用再输入<script></script>块了,同时也没有限制脚本代码的复杂性,也就是说,您可以输入许多函数,直到您满意为止。

 

6.存在的不足

 

[1] 某些情况下,无法定位一个元素在树中的位置,目前已知的原因是因为当前页面中包含有未封闭的或不配对的HTML标记(指块级HTML标记),或者因为该元素是某个Frame/IFrame中的内嵌元素。

 

[2] 鼠标跟踪状态下,当跟踪一个OBJECT元素时,可能无法使用快捷键,原因是因为OBJECT对于对浏览器的键盘事件支持的不够好。晤,这么说脸皮大概很厚吧。。。

 

[3] 在树视图模式下,浏览OBJECT/APPLET元素时,无法显示内含的PARAM节点,因为微软在实现类似的内嵌节点时进行了特殊处理,目前还没有解决的办法和想要去解决的动力。

 

[4] 无法捕捉到未命名的Frame/IFrame元素中内嵌页面的HTML事件(未命名是指没有指定id/name的值)。目前的解决方案是,选中未命名frame,使用CTRL+ATL+O/O快捷键在新窗口中打开它,然后再来分析它的结构。

 

[5] 对于客户端动态生成的页面,可能分析总会落后那么一些,因为当客户端脚本执行object. appendChild()或其他类似的方法后,并没有相应的事件可供截获,所以,目前看来,这是一个悬而未决的难题。如果你要分析客户端的动态页面的话,只有请你常常去刷新一下节点树吧这是最佳的解决方案了真的。

  

[6] 其它未知的不足。。。

 

如果您有什么意见和想法请告诉我,谢谢。

 

7.版本历史

[0.9.5.2]

1)修正了展开多级嵌套的FRAMESET/FRAME节点时,会导致IE crash的错误。谢谢网友MalletKing的反馈。

2)一个小改进,PowerBand现在可以使用系统的Theme风格了,看起来漂亮了很多。

3)为树视图的右键菜单新增了一个小功能,可以选中一个节点,切换contentEditable的状态,当然,这要求IE的版本至少是5.5才可以。晤,可有可无的功能,正好想起来,就随手加上了。

 

[0.9.5.0]

1)非常遗憾的,出于无法回避的原因(这都要怪微软的工程师),静态连编了CRT,所以,不幸的PowerBand 原来那娇小苗条的身材现在凭空增长了近90kb,但是,这换回来了一些强大的功能,虽然,那多出来的体重让我耿耿于怀,但不管怎样,希望你还是能够和以前一样的喜欢它。

 

2)新增了执行外部脚本来操纵当前IE对象模型的功能。晤,让我来解释一下这个功能吧,因为有朋友提议说希望能够给出一个途径,可以方便的获得当前页面中所有的图片,或是所有连接的地址,甚至是所有的Flash。如果,你熟悉HTML DOM模型的话,就会知道这只是枚举Document.all / images / links /embeds 集合的举手之劳而已。虽然这很简单,也很容易实现,但是,这与PowerBand的身份不相符合,因为PowerBand被定位成一个强大的面向IE内核的hack工具,负责去挖掘一些IE深层的东西。所以,就有一个声音在一旁说,那为什么不干脆就把IE运行时的DOM结构开放出来,外挂一个脚本的接口,可以通过你写的脚本,让你实时的去操纵它,了解它,去和他交谈,去做任何你想做的事情,甚至还可以去操作你的Windows,文件系统,晤当然,也可以帮助你格式化硬盘,如果你需要重装系统的话。随分发包同时还提供了几个脚本示例,你可以先运行它们来感受一下,这真的是一个让人激动的功能啊,难道你不这么认为吗?有关于脚本环境的详细说明请参考readme文件中的相关段落。顺便还要说一句的是,你需要使用其他的编辑器来编写脚本,notepad或者editplus,只要你喜欢就都可以,然后交给PowerBand去执行它就行了,而PowerBand并没有提供内置的脚本编辑器,因为,PowerBand是一个Hacker

 

3)调整了工具栏的布局,因为又增加了新的功能,导致工具条可能会因为过长而显得臃肿,并且让人眼花,现在把stop popup window功能对应的按钮移到了设置对话框中,虽然这个功纯属多余,但是.....还是继续留着吧。

 

4) 完善了Customize Dialog的逻辑,以前无法同步显示修改后的内容(一直懒得去实现,因为WTLDDX总有点问题,自己实现则过于繁琐,所以就被搁置了),现在已经可以正常使用了。

 

5)修改了搜索节点的算法,原来采用的递归算法被废弃了,现在采用了更加安全高效的方法。

 

6)其他一些细节的完善和修正。

 

[0.9.4.x]

1)ATL7纠缠了几天,终于解决几个已经头痛了几天的问题。

 

2)修改了PowerBand的行为模式,晤,其实是修正了一些设计上的问题,明确了某些功能的职责和语义。其中包括捕捉HTML事件和就地编辑的冲突模式,页面加载初始化的语义,以及其他一些细微的,但是可能会引发问题的地方都作了调整。

 

3)增强了IE就地编辑的功能,现在默认打开了LiveResize2D Position两个选项,并实现了自定义标签图符的占位显示。我知道虽然不会有人真的在IE里面去编辑HTML页面,但是看起来的确很不错,不是吗?(看着现在的IE,可否让你觉得自己面对着的好像是Dreamweaver?)

 

4)比较有新意的是,增加了一个在IE中显示Grid(栅格)的功能,如果当前的页面设定了不透明的背景色,并且勇敢的铺满在整个显示区时,可怜的Grid就被完全挡住了,你将看不见它。新增这个功能出于两个目的,其一是技术上的探索需要,因为这是一种新颖的,有趣的IE扩展方式。其二,是参考了类似Photoshop的绘图软件,可以为你提供一个参照的坐标系,这样就可以方便的定位和丈量某个你感兴趣的元素。   

 

5)优化了事件捕捉部分的代码。

 

6)这条更新基本上每回总要写一次,或许我应该在文档的头部声明一个宏或者是常量来引用它吧,它的内容定义如下:修正了一些这样和那样的bug

 

[0.9.3.1]

1)修正了过滤TextNode时可能会引起无法展开节点的问题。

2)修改了定位查找功能的错误提示信息。目前尚无法定位Frame中的元素,等日后再实现吧。(指对应 f 快捷键的功能)

 

[0.9.3.0]

1)修改了事件捕捉机制,现在可以catchFrame/IFrame里面的HTML事件了,但是如果该Frame/IFrame没有被命名(没有指定name/id的值),依然无法catch其中的事件,这真的是件比较头痛的事情,可惜目前还没有找到更好的解决办法。

 

2)调整了察看html node属性的功能,现在可以在innerHTMLouterHTML两种方式下切换了。

 

3)完善了树视图中的Attributes节点的处理,现在可以完美的显示内嵌的CSS代码了。

 

4)修改了树视图的显示方式,现在过滤了可有可无的TextNode类型节点的显示。

 

5)为察看html node属性新增了节点切换功能,可以直接切换到父子节点及兄弟节点上,同时也发现微软为了兼容人们粗心所造成的html语法错误,在DOM 结构中作了很多宽容大度的处理,是的,这和该公司的一贯作风不相符合。但是这次他们真的这么做了。但这同时也导致了程序员在直接操纵DOM结构时,会发生很多意想不到的,诡异的事情。如果你能够,你就会常常听到有人在喊叫哦,为什么这个节点会机敏的出现在这里?,所以,很遗憾,为了避免这种混乱,只能屏蔽掉切换兄弟节点的功能了,直到有一天,能够发现一个可以脱离混乱的办法为止。

 

[0.9.1.0]

1)修正了几个可能会引起memory leak的小问题。

 

2)修正了和Windows Explorer冲突的问题。

 

[0.9.0.2]

1)出于完整性的考虑,为树视图增加了copy html的菜单功能。

 

2)增加了显示/修改当前页面Cookie的功能。

 

3)修正了浏览OBJECT/APPLET/FRAME节点时可能会引起的IE崩溃问题。

 

[0.9.0.0]

1)IE的工具条上新增了对应PowerBand的按钮,现在可以不用从菜单里面苦苦的寻找了。

 

2)为树视图增加了右键菜单,原有的大部分快捷键现在都可以使用菜单操作了,除了一个,就是CTRL+ATL+O

 

3)为树视图增加了复制当前节点文本的功能。

 

4)修改并增强了搜索功能。

 

5)提供了方便的增加脚本功能,可以为当前的页面增加新的脚本,想想当你点击google的搜索按钮时却弹出一个消息告诉操作者“hi,今天google休息的滑稽场面吧。并且对原来的新增HTML代码功能作了调整,让他安心做好自己该做的。

 

6)几个小问题的修正。

 

7)开发环境升级到VC7.1。晤,直接导致文件大了10kb

 

[0.8.9.4+]

1)修正了和IE热键的冲突问题,因而现在针对于树视图的所有快捷键,除了删除键DEL仍然没有变之外,其他均修改CTRL键和ALT键同时使用的组合键。(没有办法,其实我也不想。。。)

 

2)新增了两个针对于树视图的快捷键: CTRL+ALT+D/CTRL+ALT+V用以来切换当且所选择元素的可见性(分别针对于style.displaystyle.visibility)

 

3)提供了动态插入部分HTML源代码的功能。(CTRL+ALT+I/I)

 

[0.8.9.3]

1)修正了在树视图上使用快捷键会自动跳转的问题。

 

2)修正了一个对话框的字体错误。

 

[0.8.9.2]

1)修正了Uninstall 后仍然留下有残余信息的疏漏。

 

2)修正了在XP Theme下和系统颜色不协调的问题。

 

3)一个细微小问题的修正。

 

[0.89] 公开发布的第一个版本。

 

[0.5x - 0.7x] 在朋友间流传的内部测试版本。

 

8.常见问题回答

[1]     问:为什么我安装了PowerBand之后却无法使用,只是看到一块白板?

答:如果曾经安装过0.93以前老版本的话,请先反安装老版本,然后安装新版本,再重启动一下机器就可以了。如果是重未安装PowerBand的机器也有如上情况,可能是您先前安装/反安装过其它的程序,注册表被锁定或使用了cache来缓存修改,请重新启动一下机器就可以了。

 

9.使用许可

      这是一个自由软件,晤,如果有一天变成要收费了,那可能是因为作者被生活所迫,希望没有这一天。

 

10.关于作者

      AWater一个普通的程序员。一开始只是为了玩玩ATL,结果就写下了这个东西。

      如果您有意见和想法,请告诉我,谢谢。

  

      邮件:hermitry@hotmail.com

 

11.结语

      希望你能够享受这个小软件。