Как я могу работать со всплывающими окнами диалогового окна «Загрузить файл» из элемента управления .NET WebBrowser?

Я использую элемент управления .NET WebBrowser в C# для автоматизации работы с веб-сайтом. На странице есть элемент управления «Кнопка», который открывает диалоговое окно «Загрузить файл» элемента управления WebBrowser для загрузки файла на сайт. Однако я не могу найти какие-либо библиотеки объектной модели/класса для прямой работы с этим диалоговым окном файла? Кажется, это стандартный диалог браузера файлов MS Windows, поэтому я надеюсь, что есть способ работать с ним напрямую. Кроме того, выполнение основного потока моего приложения останавливается, пока этот диалог открыт в элементе управления WebBrowser, поэтому для меня это было особенно проблематично.

В идеале я хотел бы отправить путь к имени файла в диалоговое окно и нажать кнопку «Открыть», используя вызовы кода непосредственно в диалоговом окне, но я не могу найти способ сделать это через объектную модель. У меня есть обходной путь, который будет работать иногда (если время выбрано правильно, а луна и все звезды идеально выровнены), используя SendKeys() до открытия этого диалогового окна, но это всего лишь хак в в долгосрочной перспективе и работает только с перерывами. Мне нужно что-то, что будет работать во всех случаях.

Есть ли у кого-нибудь идеи о том, как я могу работать напрямую с диалоговым окном «Загрузить файл», которое создается элементом управления .NET WebBrowser?


person GeoffreyG    schedule 14.03.2013    source источник
comment
Начинать с приветствия и других форм приветствия просто не нужно, а также в части приветствия и наилучших пожеланий. Это сообщество больше ориентировано на вопросы, на которые нужно ответить, все остальное просто лишнее. Я отредактировал ваш пост, потому что в прошлый раз тоже допустил те же ошибки и был отруган модераторами :)   -  person Andry    schedule 15.03.2013
comment
Нет проблем... и спасибо!   -  person GeoffreyG    schedule 15.03.2013


Ответы (1)


То, о чем вы просите, создаст такую ​​огромную зияющую дыру в безопасности, что никогда не произойдет.

Вместо этого вы можете использовать метод WebClient.UploadFile или HttpWebRequest с правильным содержимым ContentType и RequestStream.

person Sam Axe    schedule 14.03.2013