Начать загрузку события inte rnet explorer addon - PullRequest
0 голосов
/ 20 февраля 2020

В моей надстройке inte rnet explorer, которую я хочу определить, когда пользователь начинает скачивать файл, у меня есть событие FileDownload , но оно не срабатывает, когда пользователь загружает файл, но при навигации.

Для иллюстрации сценария я создал небольшое консольное приложение (если вы хотите протестировать его на своем компьютере):

  1. Добавить ссылку на SHDocVw dll (расположение на C:\Windows\System32)
  2. Создайте консольное приложение с кодом ниже
  3. Включите ваше приложение для взаимодействия с проводником Inte rnet, как я писал ниже.

Код:

    static void Main(string[] args)
    {
        SHDocVw.InternetExplorer IE = new SHDocVw.InternetExplorer();
        object Empty = 0;
        object URL = "http://www.orimi.com/pdf-test.pdf";
        IE.BeforeNavigate2 += WebBrowser_BeforeNavigate21;
        IE.FileDownload += IE_FileDownload;
        IE.Visible = true;
        Thread.Sleep(60000);
        IE.Quit();
    }

    public void OnBeforeNavigate2(object sender, ref object URL,
                                      ref object Flags, ref object Target,
                                      ref object PostData, ref object Headers,
                                      ref bool Cancel)
    {
        Console.WriteLine("BeforeNavigate2 fired!");
    }

    private static void IE_FileDownload(bool ActiveDocument, ref bool Cancel)
    {
        Console.WriteLine($"{ActiveDocument} {DateTime.Now}");
        Cancel = true;

    }

Включить IE для взаимодействия с приложением:

1.1 В окне rnet Explorer откройте «Inte rnet Опции» 1.2 Снимите галочку с отмеченные флажки на вкладке «Аванс»

enter image description here

1 Ответ

0 голосов
/ 27 февраля 2020

Это можно сделать с помощью события BeforeNavigate2 , например:

SHDocVw.InternetExplorer IE = new SHDocVw.InternetExplorer();
IE.BeforeNavigate2 += IE_BeforeNavigate2;

когда пользователь загружает файл, вызывается следующий метод:

static void IE_BeforeNavigate2(object pDisp, ref object URL, 
ref object Flags, ref object TargetFrameName, ref object PostData, 
ref object Headers, ref bool Cancel)
{
    Console.WriteLine("Event: IE_BeforeNavigate2");
}
...