具体的不清楚,不过据我所知flashget在IE中的右键下载借助了一段网页脚本,内容如下:<script language="VBScript"> 'Great thanks to Vladimir Romanov(Author of ReGet Pro) 'Download selected linkSub AddLink(Url,Info) On Error Resume Next set JetCarCatch=CreateObject("JetCar.Netscape") if err<>0 then MsgBox("FlashGet not properly installed!"+ vbCrLf+"Please install FlashGet again") else call JetCarCatch.AddUrl(Url, Info, external.menuArguments.document.Url) 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>
这个是“下载全部连接”的脚本:<script language="VBScript"> 'Great thanks to Vladimir Romanov(Author of ReGet Pro) On Error Resume Next set JetCarCatch=CreateObject("JetCar.Netscape") if err<>0 then MsgBox("FlashGet not properly installed!"+ vbCrLf+"Please Install FlashGet again") 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 JetCarCatch.AddUrlList params end if </script> FlashGet好像注册了一个什么东西到系统里面。否则CreateObject("JetCar.Netscape")不会生效。
在浏览器加content menu只要添加注册表MenuExt就行 运行脚本 <html> <script type="text/javascript"> // this isn't being called from a menu if (external.menuArguments != null) { // Get the DOM for the current page var doc = external.menuArguments.document;
// Get the browser for the right click var parentwindow = external.menuArguments; var parentevent = null; // Find the event (either from the parent window, or if we're in // frames, from the frame) if(parentwindow) parentevent = parentwindow.event;
// If we're in a subframe, iterate through the frame stack until we find the // frame with the events- grab its events. if(!parentevent && parentwindow) { if(parentwindow.frames) { for(i = 0; i< parentwindow.frames.length; i++) { if(parentwindow.frames(i).event) { parentevent = parentwindow.frames(i).event; break; } } } }
if(parentevent) { var url = escape(parentwindow.location.href); var selectedElement = doc.elementFromPoint(parentevent.clientX, parentevent.clientY ); var tag = selectedElement.tagName; if(tag == "A" || tag == "a") url = selectedElement; if(tag == "IMG" || tag == "img") { // selectedElement = getContainingA(selectedElement); url = selectedElement.src; } url = ""+url; var DownloadManager= new ActiveXObject("DownloadManager.DownloadManager"); DownloadManager.AddUrl(url); } } </script> </html> 调用一个你写的dll,但必须要先gacutil /if xxx.dll,regasm xxx.dll 注意是强类型程序集.在浏览器上加toolbarbutton就需要扩展band object,去MSDN搜索吧.
'Great thanks to Vladimir Romanov(Author of ReGet Pro)
'Download selected linkSub AddLink(Url,Info)
On Error Resume Next
set JetCarCatch=CreateObject("JetCar.Netscape")
if err<>0 then
MsgBox("FlashGet not properly installed!"+ vbCrLf+"Please install FlashGet again")
else
call JetCarCatch.AddUrl(Url, Info, external.menuArguments.document.Url)
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>
'Great thanks to Vladimir Romanov(Author of ReGet Pro) On Error Resume Next
set JetCarCatch=CreateObject("JetCar.Netscape")
if err<>0 then
MsgBox("FlashGet not properly installed!"+ vbCrLf+"Please Install FlashGet again")
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
JetCarCatch.AddUrlList params
end if
</script>
FlashGet好像注册了一个什么东西到系统里面。否则CreateObject("JetCar.Netscape")不会生效。
是和托拽事件有关么?那如何获得路径呢?.net中有相关的方法么?
应该是OS会发一个消息给窗体。
关键是flashget是怎么取得下载地址的?/
运行脚本
<html>
<script type="text/javascript">
// this isn't being called from a menu
if (external.menuArguments != null)
{
// Get the DOM for the current page
var doc = external.menuArguments.document;
// Get the browser for the right click
var parentwindow = external.menuArguments;
var parentevent = null; // Find the event (either from the parent window, or if we're in
// frames, from the frame)
if(parentwindow)
parentevent = parentwindow.event;
// If we're in a subframe, iterate through the frame stack until we find the
// frame with the events- grab its events.
if(!parentevent && parentwindow)
{
if(parentwindow.frames)
{
for(i = 0; i< parentwindow.frames.length; i++)
{
if(parentwindow.frames(i).event)
{
parentevent = parentwindow.frames(i).event;
break;
}
}
}
}
if(parentevent)
{
var url = escape(parentwindow.location.href);
var selectedElement = doc.elementFromPoint(parentevent.clientX, parentevent.clientY );
var tag = selectedElement.tagName;
if(tag == "A" || tag == "a")
url = selectedElement;
if(tag == "IMG" || tag == "img")
{
// selectedElement = getContainingA(selectedElement);
url = selectedElement.src;
}
url = ""+url;
var DownloadManager= new ActiveXObject("DownloadManager.DownloadManager");
DownloadManager.AddUrl(url);
}
}
</script>
</html>
调用一个你写的dll,但必须要先gacutil /if xxx.dll,regasm xxx.dll
注意是强类型程序集.在浏览器上加toolbarbutton就需要扩展band object,去MSDN搜索吧.