如何创建一个IE右键菜单就像迅雷的IE右键下载要求:
创建一个IE右键菜单,当点击的时候  可以获取到当前页面的源代码然后把网页的源代码 传给软件  

解决方案 »

  1.   

    本站有这问题的讨论:
    http://topic.csdn.net/t/20001224/19/51722.html
    陈省在深度探索提高过这方面的代码实现:
    http://delphi.sharpplus.com/Delphi/ie_menu.htm如果看完这两个连接,都弄不来的话,那么,在这三言两语就更说不来的了。
      

  2.   

    这个有难度。我以前写过。你这点分不足以我给你贴全部代码。这里我只说下思路和贴出部分代码:第一步:编写DLL文件,该DLL文件与网页中的脚本实现通讯,并把取到的网址发给EXE主程序。这一步是程序的核心和关键。第二步:编写接受消息的EXE窗体,并在该窗体中实现写与删注册表的功能。该EXE必须能接受到DLL发过来的消息(网址源码字符串)。此步的写注册表功能主要决定IE右键是否显示。第三步:编写网页脚本(即.htm文件)。可以是可以采用VBScrip脚本。实现向DLL传参。
    得到当前网页的原理是:脚本获取到数据→传给DLL媒介→接受DLL传来消息的EXE没有DLL做中间传递,右键能加到菜单中但不具有调用功能,这样就毫无意义的一个菜单。加右键简单,关键是调用。通过DLL来实现网页鼠标右键是唯一的办法。
    加右键的要求:必须保证htm文件存在,因为调用就是由脚本起源。
    必须保证注册DLL,否则脚本因找不到对象而创建失败。建立ID右键菜单:Var Reg:TRegistry;
    begin
     Reg:=TRegistry.Create;
     Try
       Reg.RootKey:=HKEY_CURRENT_USER;
       if Reg.OpenKey('Software\Microsoft\Internet Explorer\MenuExt',True) then
         begin
           Reg.WriteString('获取源码(&Q)','');
           if Reg.OpenKey('获取源码(&Q)',True) then
            begin
             Reg.WriteString('',ExtractFilePath(ParamStr(0))+'IERight.htm');
             Reg.WriteInteger('Contexts',$f3);
            end;
         end;
     Finally
       Reg.CloseKey;
       Reg.Free;
     end;
    'IERight.htm'内的脚本就是一个获取源码的写法,你自己研究吧。
    注册DLL时执行命令:regsvr32 /s IEContextMenu.dll