none
IDownloadManager (плагин для Internet Explorer), Custom download manager RRS feed

  • Общие обсуждения

  • Вобещм проблема такая. Написал реализацию данного интерфейса на шарпе. Прописал в реестре где надо. Но в момент когда код должен вызваться (когда щелкаешь по ссылке скачки) вылетает интернет экслорер. При этом метод не вызывается (не доходит до этого). Сделал тестовое приложение на с++, которое создает инстанс и вызывает метод - работает. Написал эту dll на с++, прописал в реестре - работает. То есть я уже очень хорошо в теме разбираюсь и экспериментов море провел. Обыскал гугл - там обычно просто код приводится и все. Пробовал разное описание метода, к примеру:

                [DispId(1)]
                void Download(
                System.Runtime.InteropServices.UCOMIMoniker pmk,
                System.Runtime.InteropServices.UCOMIBindCtx pbc,
                System.UInt32 dwBindVerb,
                System.Int32 grfBINDF,
                System.IntPtr pBindInfo,
                [MarshalAs(UnmanagedType.LPWStr)]
                System.String pszHeaders,
                [MarshalAs(UnmanagedType.LPWStr)]
                System.String pszRedir,
                System.UInt32 uiCP
                );



    или


            [DispId(1)]
            int Download(
    
    [In, MarshalAs(UnmanagedType.Interface)] IMoniker pmk,
    
    [In, MarshalAs(UnmanagedType.Interface)] IBindCtx pbc,
    
    [In, MarshalAs(UnmanagedType.U4)] UInt32 dwBindVerb,
    
    [In] int grfBINDF,
    
    IntPtr pBindInfo,
    
    [In, MarshalAs(UnmanagedType.LPWStr)] string pszHeaders,
    
    [In, MarshalAs(UnmanagedType.LPWStr)] string pszRedir,
    
    [In, MarshalAs(UnmanagedType.U4)] uint uiCP);



    так кстати даже с тестовым приложением не работает, а код скопировал с интернета а не сам придумал.

    или

    [DispId(1)]
            void Download(
               System.IntPtr pmk,
               System.IntPtr pbc,
               System.UInt32 dwBindVerb,
               System.Int32 grfBINDF,
               System.IntPtr pBindInfo,
                System.String pszHeaders,
                System.String pszRedir,
               System.UInt32 uiCP
               );



    Вобщем давайте обсудим, какие идеи. А лучше нужен человек который на собственном опыте это реализовал.
    • Изменено vanomas 22 сентября 2011 г. 13:50
    • Изменен тип Abolmasov Dmitry 3 октября 2011 г. 6:54
    • Изменен тип Abolmasov Dmitry 3 октября 2011 г. 7:27
    22 сентября 2011 г. 13:49

Все ответы

  • Уважаемый пользователь!

    В вашей теме отсутствует активность в течение последних 5 дней. При отсутствии каких-либо действий в течение 2 последующих дней, тема будет переведена в разряд обсуждений. Вы можете возобновить дискуссию, просто оставив сообщение в данной теме


    Для связи [mail]
    26 сентября 2011 г. 22:28
  • > IDownloadManager [...]  Написал реализацию данного интерфейса на шарпе. [...] метод не вызывается (не доходит до этого). [...] [DispId(1)] void Download(

     
    using System;
    using System.Runtime.InteropServices;
    using System.Runtime.InteropServices.ComTypes;
    ...
    [ComVisible(true), ComImport,
    Guid("988934A4-064B-11D3-BB80-00104B35E7F9"),
    InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IDownloadManager
    {
        [return: MarshalAs(UnmanagedType.I4)]
        [PreserveSig]
        int Download(
            [In, MarshalAs(UnmanagedType.Interface)] IMoniker pmk,
            [In, MarshalAs(UnmanagedType.Interface)] IBindCtx pbc,
            [In, MarshalAs(UnmanagedType.U4)] UInt32 dwBindVerb,
            [In] Int32 grfBINDF,
            ref IntPtr pBindInfo,
            [In, MarshalAs(UnmanagedType.LPWStr)] string pszHeaders,
            [In, MarshalAs(UnmanagedType.LPWStr)] string pszRedir,
            [In, MarshalAs(UnmanagedType.U4)] UInt32 uiCP
            );
    }
    
     
     
    • Изменено Malobukv 13 января 2012 г. 18:07
    13 января 2012 г. 18:07