В моей надстройке inte rnet explorer, которую я хочу определить, когда пользователь начинает скачивать файл, у меня есть событие FileDownload , но оно не срабатывает, когда пользователь загружает файл, но при навигации.
Для иллюстрации сценария я создал небольшое консольное приложение (если вы хотите протестировать его на своем компьютере):
- Добавить ссылку на
SHDocVw
dll (расположение на C:\Windows\System32
) - Создайте консольное приложение с кодом ниже
- Включите ваше приложение для взаимодействия с проводником 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 Снимите галочку с отмеченные флажки на вкладке «Аванс»