关于多种环境注册右键弹出事件的方法,请   
  按照以下对应关系:   
  \HKEY_CLASSES_ROOT\Folder\Shell                     任意文件夹   
  \HKEY_CLASSES_ROOT\Directory\Shell               任意目录   
  \HKEY_CLASSES_ROOT\Drive\Shell                       任意驱动器   
  \HKEY_CLASSES_ROOT\*\Shell                               任意文件   
  新建一个主键,并在主键下添加一个特定主键(command),修改command的键值指到你的应用程序。   
     
  例如:   
  建立\HKEY_CLASSES_ROOT\Folder\Shell\AimTest,将在Folder上按下右键时出现"AimTest"菜单   
  建立\HKEY_CLASSES_ROOT\Folder\Shell\AimTest,并设定该主键的缺省值为"我的测试菜单",则将在Folder上按下右键时出现"我的测试菜单"菜单钮。   
  建立\HKEY_CLASSES_ROOT\Folder\Shell\AimTest\command,并设定command"缺省"键值为"c:\tools\pse.exe"   "%1",则将以Folder名为第一参数启动pse.exe。   
          *   注意command键值的双引号不可缺省   
     
  另外:   
  \HKEY_CLASSES_ROOT\Folder\Shellex   
  \HKEY_CLASSES_ROOT\Directory\Shellex   
  \HKEY_CLASSES_ROOT\Drive\Shellex   
  \HKEY_CLASSES_ROOT\*\Shellex   
  可以按应用程序在Registroy中的注册ID调用。这样可以调用.DLL和钩子函数。   
  但建议按第一种方法调用应用程序,因为注册一个ID实在麻烦。   
     
  如果你的应用程序支持DDE,你可以参考   
  \HKEY_CLASSES_ROOT\Directory\Shell\Find键的设定来进行DDE设置。   
  ==========================================================================   
  如何在IE右键菜单中添加菜单项   
      要实现在IE右键菜单中添加菜单项的功能,要依次实现以下步骤:   
     
      1、在注册表HKEY_CURRENT_USER\Software\Microsoft\Internet     
     
  Explorer\MenuExt项下建立一个   
     
  新项,项的名称既出现在菜单中的标题,例如你想建立的菜单项标题为Add   URL,则   
     
  新建项的名称为   
     
  HKEY_CURRENT_USER\Software\Microsoft\Internet   Explorer\MenuExt\Add   URL   
     
      2、将新建项的默认值设定为一个URL地址,当用户点击菜单项后,IE就会调用   
     
  URL指向的页面中的脚   
     
  本,在目标页面的脚本中通过访问external对象的menuArguments属性就可以访问IE   
     
  中的页面。该属性定   
     
  义了一个Window对象。该对象描述了浏览器中的一个打开的窗口。详细的帮助请参考   
     
  MSDN中关于   
     
  InternetExplore   object的帮助,熟悉了Window对象才可以比较好的了解下面的脚   
     
  本。   
     
      对于如何实现自身的程序访问menuArguments的问题,我们可以仿效Netants的   
     
  做法,首先建立一个   
     
  OLE   Automation对象,然后在脚本中调用该对象,并将页面信息传递对象处理。下面   
     
  通过Delphi建立对象   
     
  来说明:   
     
      打开Delphi,点击菜单:   文件|新建   ,选择窗口中的ActiveX标签,在列表中   
     
  选择ActiveX   Library   
     
  图标后按确定键,这样就新建了一个Active   Library工程。然后将工程文件保存为   
     
  IEContextMenu.dpr   。   
     
      再点击菜单:   文件|新建   ,选择窗口中的ActiveX标签,在列表中选择   
     
  Automation   Object   图标后按   
     
  确定键,然后在   Automation   Object   Wizard   窗口中的CoClass   Name栏中输入   
     
  IEMenu1后按确定键。   
     
  这时会弹出IEContextMenu.tlb   的Type   Library窗口,左边是对象和属性等的列表   
     
  窗口,右边是相应的选   
     
  项窗口。在其中已经加入了IIEMenu1接口。   
     
      现在给接口添加一个AddURL方法。首先选择Type   Library列表中的IIEMenu1   
     
  项,然后点击Type   Library   
     
  窗口上面的   New   Method   按钮添加一个方法,将该方法的Name属性改为AddURL。下   
     
  来再点击Parameters标签   
     
  转到参数设定页,添加两个参数:URL和Info,属性都设置为BSTR,设置好的Type     
     
  Library窗口如图所示:   
     
  (附加图片1-1.bmp)   
     
      关闭设置窗口回到Delphi,点击save   all按钮保存文件,现在IEMenu对象建立   
     
  完毕了,在对象中我们将   
     
  只实现最简单的功能,既显示用户在页面中单击右键位置的对象URL,所以在Unit1的   
     
  TIEMenu1.AddURL子程   
     
  序中只添加一句:   showmessage(URL);   
     
      同时在Unit1的Uses中加入Dialogs。选择菜单上的Build   |   Build     
     
  IEContextMenu   项编译生成   
     
  IEContextMenu.dll。   
     
      下面是注册对象,在资源管理器中将Windows\system目录下的Regsvr32.exe拷   
     
  贝到IEContextMenu.dll   
     
  所在目录中,然后将IEContextMenu.dll图标拖到Regsvr32.exe上放开,这时   
     
  Regsvr32.exe就会弹出对话框   
     
  提示对象注册成功。   
     
      打开UltraEdit(或者其它文本编辑器)将下面的脚本代码输入编辑器中:   
     
       
     
       
     
         
     
      将文件保存到c:\program   files   下,文件名为   geturl.htm   
     
      从上面的脚本可以看到,首先访问external.menuArguments属性,获得用户单   
     
  击鼠标右键位置的对象,然   
     
  后根据对象的不同获得它的URL,然后建立IEContextMenu.IEMenu1对象并调用该对   
     
  象的AddURL方法。   
     
      接下来是为右键菜单建立注册项,打开UltraEdit(或者其它文本编辑器)将下面   
     
  的注册数据输入编辑器中   
     
  Windows   Registry   Editor   Version   5.00   
     
       
     
  [HKEY_CURRENT_USER\Software\Microsoft\Internet   Explorer\MenuExt\&Get     
     
  URL]   
     
  @="c:\\program   files\\geturl.htm"   
     
  "Contexts"=dword:00000022   
     
       
     
      将文件以reg为后缀保存,然后在Windows资源管理器中双击该文件将注册项添加   
     
  到注册表中,然后打开   
     
  IE,右键点击一个连接或者图片,在弹出菜单中会出现一个Get   URL项,点击该项,   
     
  就会出现一个消息框显示   
     
  点击的连接或者图片的URL地址   
     
      下面再介绍一下上面注册项中Contexts项的作用,通过该项可以制定菜单项在右   
     
  键点击IE中的什么对象时   
     
  出现,它可以为以下值的“或”组合:   
     
  对象   值     
     
  缺省   0x1     
     
  图片   0x2     
     
  控件   0x4     
     
  表单域   0x8     
     
  选择文本   0x10     
     
  锚点   0x20     
     
      例如上面我们希望菜单项在用户点击图片或者超链接时出现,那么我们就将值设   
     
  置为dword:00000022,既在   
     
  点击图片   或者   锚点时出现菜单。一个锚点是页面中描述一个超链接的对象。如果不   
     
  设置Contexts项,则菜单项   
     
  会在点击任何对象时出现在右键菜单中。
posted on 2009-03-27 21:52  一个人的天空@  阅读(563)  评论(0编辑  收藏  举报