以前的方法是使用CreateObject方法调用com组件,在.net中会不会有其他方法?如果有请告知。    step by step ,下面的步骤手工实现在IE右菜单加入新项,新项指向你的程序。了解了这个原理,在程序中实现下面的步骤不是很难。1 写一个.cs文件abc.cs,内容如下:
using System;
using System.Windows.Forms;
using System.Reflection;
[assembly: AssemblyKeyFileAttribute("mykey.snk")]
namespace abc
{
public class abc
{
public void ShowMe(string url,string info)
{
MessageBox.Show(url+","+info);
}
}
}2 在abc.cs的同一目录下打开命令行,键入 sn -k mykey.snk,执行。这时,生成一个新文件mykey.snk。3 再键入:csc /t:library abc.cs,这时,生成一个abc.dll4 再键入:gacutil /i abc.dll,这一句将生成的dll安装到全局高速缓存5 再键入:regasm abc.dll,这一句对abc.dll进行注册,abc.dll被注册后,所有的com客户多可以访问它。6 打开注册表,在HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt项下建立一个新项,项的名称也就是出现在菜单中的标题,比如你想建立的菜单项标题为ShowMe,则新建项的名称为HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\ ShowMe
7 将ShowMe的默认值设定为一个URL地址,当用户点击菜单项后,IE就会调用URL指向的页面中的脚本,这里的脚本文件(abc.htm)在下面给出。比如,脚本文件abc.htm在e盘,这个地址就是e:\abc.htm
8 在ShowMe下新建一个DWORD键值contexts,该键值定义了该上下文菜单在何种情况下显示。在IE中右击有7种情况。
1)为默认情况,就是右击空白区域,键值contexts对应于0X1
2)在图形上右击,键值contexts对应于0X2
3)在控制上右击,键值contexts对应于0X4
4)在表格上右击,键值contexts对应于0X8
5)在选择区域上右击,键值contexts对应于0X10
6)在超级链接上右击,键值contexts对应于0x20
7)在不能确定的部分右击,键值contexts对应于0x40.
这7种情况可以组合起来,如contexts为0X7F,表示这7种情况都适用。    至于那个脚本文件如何写,你可以参照下面的文件,它是我从网际快车稍加修改拿过来的。你也可以参考http://expert.csdn.net/Expert/topic/1180/1180725.xml?temp=.8665125脚本文件abc.htm :
<script language="VBScript">
Sub AddLink(Url,Info) 
On Error Resume Next
set JetCarCatch=CreateObject("abc.abc")
if err<>0 then
MsgBox("FlashGet not properly installed!"+ vbCrLf+"Please install FlashGet again")
else
call JetCarCatch.ShowMe(Url, Info)
        end if
end subSub OnContextMenu()
set srcEvent = external.menuArguments.event
set EventElement = external.menuArguments.document.elementFromPoint ( srcEvent.clientX, srcEvent.clientY )
if srcEvent.type = "MenuExtAnchor" then 
set srcAnchor = EventElement
do until TypeName(srcAnchor)="HTMLAnchorElement"
set srcAnchor=srcAnchor.parentElement
Loop
Call AddLink(srcAnchor.href,srcAnchor.innerText)
elseif srcEvent.type="MenuExtImage" then
if TypeName(EventElement)="HTMLAreaElement" then
Call AddLink(EventElement.href,EventElement.Alt)
else 
set srcImage = EventElement
set srcAnchor = srcImage.parentElement
do until TypeName(srcAnchor)="HTMLAnchorElement"
set srcAnchor=srcAnchor.parentElement
if TypeName(srcAnchor)="Nothing" then 
call AddLink(srcImage.href,srcImage.Alt)
exit sub
end if
Loop
Call AddLink(srcAnchor.href,srcImage.Alt)
end if
elseif srcEvent.type="MenuExtUnknown" then
set srcAnchor = EventElement
do until TypeName(srcAnchor)="HTMLAnchorElement"
set srcAnchor=srcAnchor.parentElement
if TypeName(srcAnchor)="Nothing" then 
Call AddLink(EventElement.href,EventElement.innerText)
exit sub
end if
Loop
Call AddLink(srcAnchor.href,srcAnchor.innerText)
elseif 1=1 then
MsgBox("Unknown Event Source """ + srcEvent.type + """" + vbCrLf + "Please send description of error to [email protected]")
end if
end sub
call OnContextMenu()</script>   不知不觉写了这么多,望了去吃饭 ;)