好象我的问题并不需要写个BHOHKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\使用网际快车下载的默认键值 是C:\JETCAR\jc_link.htm这么说我有可能写一个这样的htm来copy,然后调用我的“小秘书”。jc_link.htm是个vbs,我没看懂。所以还是不知道怎么做。

解决方案 »

  1.   


    给你转贴一篇,怎么最近找不到你啊?你还在QQ吗?
    怎样在IE工具栏上加入自己的工具写一个COM程序,然后在注册表的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Extensions下放你的程序的GUID项,IE就会自动添加这个按钮了。项下面的属性参考其他.
     1.HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\Extensions\CmdMapping(以下简称BB)下看看各个增加的键值,最有用的是NextID(便于编程时决定你的程序的CLSID加在什么地方)。可以将你的程序的CLSID作为键名,键值为原来NextID的值,然后将NextID的值加一。
    2.在HKKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Extensions处增加一个项目,名字为你的程序的CLSID,他拥有的子键为(全部为字符串型)
      ButtonText:按钮的文字标签。如果你设置IE的工具栏没有文字标签时,这些文字将作为工具提示(就是当鼠标移动到按钮上并停留一段时间时出现的小黄条)。
      CLSID:必须为{1FBA04EE-3024-11D2-8F1F-0000F87ABD16}。这是IE工具条的CLSID。
      Default Visible:安装时是否可见。  Exec:要执行的文件。(EXE格式)
      或者
      ClsidExtension:加入的插件DLL注册的ID。  HotIcon:当鼠标移动到按钮上时显示的图标。
      Icon:普通状态下的图标。
      MenuText:在IE的“工具”菜单中显示的菜单项。可以使用&符号指定快捷键。
      MenuStatusBar:当鼠标移动到该菜单项上时,在IE的状态栏上显示的文字。说明:可以用CLSIDExtension去指定自己为IE写的扩展DLL,即“插件”如Flash插件。此时就不要指定Exec选项。同时也不要使用Menu的选项。    CLSID就是类的ID,系统根据这个来区分不同的COM对象。
     例子:,C++Buildervoid __fastcall TChangeSkinForm::SetButton()
    {
        AnsiString asIEKey = "Software\\Microsoft\\Internet Explorer\\Extensions";
        if(!RegKeyExists(HKEY_LOCAL_MACHINE, asIEKey))//ie 4.0
            return;
        //增加按钮
        AnsiString asMyKey = asIEKey + "file://{06DD38D3-D187-11CF-A80D-00C04FD74AD8/}";
        WriteStringToReg(HKEY_LOCAL_MACHINE, asMyKey, "CLSID", "{1FBA04EE-3024-11D2-8F1F-0000F87ABD16}" ,true);
        WriteStringToReg(HKEY_LOCAL_MACHINE, asMyKey, "ButtonText", "背景" ,true);
        WriteStringToReg(HKEY_LOCAL_MACHINE, asMyKey, "Default Visible", "yes" ,true);
        WriteStringToReg(HKEY_LOCAL_MACHINE, asMyKey, "Exec", Application->ExeName ,true);
        WriteStringToReg(HKEY_LOCAL_MACHINE, asMyKey, "HotIcon",  ExtractFilePath(Application->ExeName) + "Skinhot.ico",true);
        WriteStringToReg(HKEY_LOCAL_MACHINE, asMyKey, "Icon",  ExtractFilePath(Application->ExeName) + "Skin.ico",true);
    }
      

  2.   

    http://www.zzh-cn.com/translations/cutting1199.htm
      

  3.   

    师弟你看:
    在jc_link.htm的VBS中. 它通过IE的几个变量想办法得到链接的一个URL的字符串.
    可实际上的工作还是通过createobject建立/或者得到了一个jetcar的COM组件接口. 之后把这个URL传进去... 你现在的工作的一点差别就是jetcar要得到的是一个链接. 而你要得到的是一块选定的文字.
    看看IE的VB的编程接口吧. 应该有这样的变量... (这个没有做过)
      

  4.   

    HOWTO: Adding to the Standard Context Menus of the WebBrowser Control Q177241
      

  5.   

    如果添加菜单,上面各位已经介绍了。下面是 NetAnts 的下载实现
    Download All
    <script language="VBScript"> On Error Resume Next
    set NetAntsApi = CreateObject( "NetAnts.API" )
    if err<>0 then
    Alert("NetAnts not properly installed on this PC!")
    else
    set links = external.menuArguments.document.links
    ReDim params(links.length*2)
    params(0)=external.menuArguments.document.Url
    for i = 0 to links.length-1
    params(i*2+1)=links(i).href
    params(i*2+2)=links(i).innerText
    next 
    NetAntsApi.AddUrlList params
            end if
    </script>
    其它的如 vcsongs 所说。
      

  6.   

    to eggplant(拉拉)今天偶尔到csdn看一看,竟然会发现我以前写的一段代码。我的天,世界真小。
      

  7.   

    多谢诸位!!wistaria(听风听雨)介绍的那篇文章甚是解渴!!!!
    我根据该文写下下面javascript.  目前调用后会把网页中的所选内容赋值到 var str.
    然后想以str作为参数打开执行程序---这就不知道该如何做了。
    另外就是,像下面javascript里面执行“全选”、“复制”、“不选”该怎么做?
    <SCRIPT LANGUAGE="JavaScript">
         var parentwin = external.menuArguments;
         var doc = parentwin.document;
         var sel = doc.selection;
         var rng = sel.createRange();
         var str = new String(rng.text);
         if(str.length == 0)
             rng.text = "这里我要全选,然后重新获取str,不知道该怎么做了";
         else
         {
             alert(str);         
         }
         //这里我要调用本地程序。比如"c:\windows\notepad.exe str"</SCRIPT> 
    另外我参看了net_lover的 http://www.csdn.net/develop/read_article.asp?id=8243 一文。我想通过javascript执行一系列操作:全选、复制、不选、以命令行方式打开我的程序。暂时写下下面脚本,但是出错了:(还请高手指点!<SCRIPT LANGUAGE="JavaScript">
         var parentwin = external.menuArguments;
         var doc = parentwin.document;
         result  = doc.execcommand('selectall',false,null);  //全选
         result  = doc.execcommand('copy',false,null);       //复制
         result  = doc.execcommand('unselect',false,null);   //不选     //上述操作是把网页的所有内容送进剪贴板,但出现错误,行3开始出错:(   ????
         //接下来我想 命令行方式打开我的程序,例如:     //  "myexe.exe readclipboard"
              该怎么做呢?
    </SCRIPT> 
      

  8.   

    我所见到的都是先写一个 com 对象,然后在脚本中调用。
    要是脚本可以直接调用 exe,那我岂不是可以 "format 你的c:"了。
      

  9.   

    你想要全部文本可以用 external.document.documentelement.innertext,不用全选。
      

  10.   

    external.menuArguments.document.documentElement.innerText
    不好意思。
      

  11.   

    chenchen:        不行啊,用上面方法得到的是全部内容(太全了)----实际上是网页源文件(包括HTML)
           我要的是显示在网页外部的文本内容,像执行全选、复制--然后粘贴到notepad那样。      我想这一定是有办法的。
      

  12.   

    我又找到一篇《在网页中调用本地的应用程序》(用javascript)http://www.csdn.net/develop/read_article.asp?id=8907但行var wsh = new ActiveXObject('WScript.Shell');出现错误:Automation 服务器不能创建对象。
      

  13.   

    outerHtml才是带html源文件的.innertext 是纯文本的。
    要不我给你发一个我以前做的dll吧,源代码暂时不能给你,Sorry。
      

  14.   

    哈,external.menuArguments.document.documentElement.innerText真奇妙,该htm如下了,接下来我就是需要打开自己的程序了,一定要用com?不能直接调用??另外,external.menuArguments.document.documentElement.innerText这些东东在MSDN的哪个部分?<SCRIPT LANGUAGE="JavaScript">
         var parentwin = external.menuArguments;
         var doc = parentwin.document;
         var sel = doc.selection;
         var rng = sel.createRange();
         var str = new String(rng.text);
         if(str.length == 0)
             str=external.menuArguments.document.documentElement.innerText;     alert(str);              //这里我要调用本地程序。比如"c:\windows\notepad.exe str"</SCRIPT> chenchen,给我些做这个DLL的提示好么?
      

  15.   

    啊~chenchen~我看到I-Search了,真想一观源代码,这个没有用Htm、那用的是BHO?
    到底怎么做的呀?
      

  16.   

    哦,看到C:\WINDOWS\I_SEARCHIE.htm了
      

  17.   

    注册的时候,我生成了一个 htm 文件。
    实际上就是写了一个 Com ,然后把这一个大串传给它,再怎么处理就很方便了。
      

  18.   

    chenchen:      这个dll该怎么写啊?哪有相关资料啊?
      

  19.   

    一个普通的 ATL ,就可以了
      

  20.   

    你也知道 MSDN/SDK/Web Services/Wordshop/DHTML 中有这些东东了。
    但这句话是我好不容易琢磨出来的。也有人说可以调用本地程序,我没做过。