flashget点鼠标左键选择“使用flashget下载”时,他是如何得到下载地址的,用c#应该怎么实现啊?是不是用全局钩子?我没找到这样的消息类型啊?
     还有,把文件拖到windows media的时候他就自动播放是怎么现在的啊?
     哪位大哥帮帮忙,在网上搜了很久,找不到答案

解决方案 »

  1.   

    具体的不清楚,不过据我所知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>
      

  2.   

    这个是“下载全部连接”的脚本:<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")不会生效。
      

  3.   

    把文件拖到windows media的时候他就自动播放是怎么现在的啊?
      

  4.   

    顶!这个问题我也想问
    是和托拽事件有关么?那如何获得路径呢?.net中有相关的方法么?
      

  5.   

    >把文件拖到windows media的时候他就自动播放是怎么现在的啊?
    应该是OS会发一个消息给窗体。
      

  6.   

    文件托拽好象有个事件叫DragDrop的,它的响应函数里有关于路径的参数
      

  7.   

    把控件的AlowDrop属性设置为true,写个DropEnter事件就可以了。
         关键是flashget是怎么取得下载地址的?/
      

  8.   

    在浏览器加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搜索吧.