#c# #winapi #download #axwebbrowser #beforenavigate2
#c# #winapi #Скачать #axwebbrowser #beforenavigate2
Вопрос:
Я работаю над проектом, пытаясь очистить сайт интрасети в моей компании, потому что прямо сейчас существуют ограничения, которые запрещают мне получать помощь на стороне сервера. Я пишу клиент C #, использующий элемент управления axWebBrowser для перехода на страницу. На странице есть элемент управления button, который вызывает страницу .aspx, которая создает динамическую загрузку csv-файла из sql-запроса. При нормальных условиях открывается диалоговое окно загрузки файлов для сохранения csv.
Я нашел примеры людей, использующих событие BeforeNavigate2 для захвата e.URL, а затем использующих событие FileDownload для переопределения диалогового окна и использования WebClient для извлечения файла. Этот метод отлично бы работал для меня, за исключением того, что e.URL содержит URL-адрес .aspx-скрипта, а не .csv-файла, который создается динамически.
Еще одно предложение, которое я прочитал, состояло в том, чтобы проанализировать заголовки из HTML-запроса для пути к файлу, но когда я это сделал, я выдал исключение несанкционированного доступа 401 к заголовкам.
Наконец, и я предпочитаю избегать этого, если это возможно, я думал об использовании вызова win32 api и использовании FindWindow и SendMessage для навигации по файловому диалогу по умолчанию, но я действительно не хочу создавать многопоточное приложение с ожиданием, чтобы сделать это. Я не могу найти событие, которое запускается при открытии диалогового окна загрузки файлов, только события, которые запускаются до его открытия или после его закрытия.
Любые идеи, которые у вас могут возникнуть, были бы замечательными, я могу начать вставлять сюда код из того, что у меня есть на данный момент, если это прояснит мое объяснение.
Комментарии:
1. Удручает отсутствие предложений. Раньше я использовал AutoIt3 с Firefox MozRepl для автоматизации этого, потому что для этого есть библиотека функций для AutoIt3, но обновление до FF4 сломало это для меня.