• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 822
  • Last Modified:

InternetExplorer object (SHDocVw.dll) for IE Automation

I am working on a project where I need to automate IE.  I am writing the application in C# and controlling the browser using the InternetExplorer object (SHDocVw.dll).  So far I have been able to do everything I need to do (navigate to a particular site/page, manipulate elements on the page, populate form objects, submit forms, etc.).  However, I would like to be able to automate the process of saving files that are linked on a site.  For instance on the website are links to .pdf files, .csv files, word files, excel files, images, etc. that I need to download to the local drive.  If I attempt to access the files by their URL/Path on the website, the browser spawns the Open/Save dialog box, of which I have not been able to determine how to interact with.  And the "Always ask this" checkbox doesn't seem to make a difference.

I do not think I can use .NET's WebRequest/HttpWebRequest objects because I need to automate a login process on the site in order to access the files.  That's why I'm using IE Automation.  I cannot use WSH (Windows Scripting Host) as this application does contain other business rules and specialized functionality.

Basically my questions are:  
1.  using IE Automation (using the InternetExplorer object) can I download files (text or binary) from a site to the local machine.  Whether I interact with the Open/Save dialog box spawned by IE or access and download the files via another means, I do not care.  
2.  When IE spawns a dialog window (i.e. Open/Save, Windows Authentication, etc.) how can you interact with it (i.e. click "Save", fill in the login/password boxes, etc.).

If you know of a better way to do what I'm trying to do, please let me know.

I appreciate your help.  Thanks.
1 Solution
You can pass credentials to WebClient objects.

WebClient wc = new WebClient();
wc.Credentials = new NetworkCredential("username", "password", "domain");
wc.DownloadFile("http://www.example.com/file.pdf", @"c:\file.pdf");
jkainaAuthor Commented:
Actually, the site uses a proprietary login.  Basically it stores usernames and passwords in a database, upon login/validation, session variables are set, etc.  So it's not using windows authentication.  That's why I was trying IE Automation.  Anyhow, thank you for the response though.  I do appreciate your input.

I ended up figuring out how I could do it.  But again, thank you for the help.
jkainaAuthor Commented:
By the way... for the curious, the way i got this to work was to use DllImport to reference UrlMon and call the UrlDownloadToFile() method.  Thanks goes out to jkr for steering me in the right direction.
Get your Disaster Recovery as a Service basics

Disaster Recovery as a Service is one go-to solution that revolutionizes DR planning. Implementing DRaaS could be an efficient process, easily accessible to non-DR experts. Learn about monitoring, testing, executing failovers and failbacks to ensure a "healthy" DR environment.

Closed, 500 points refunded.
ee_ai_construct (replacement part #xm34)
Community Support Moderator
jkaina, I am trying to perform the same opperation of downloading files. I am encouraged by the fact that you were able to make it work. Do you mind posting a few more links on IE interaction, perhaps some of your sample code? I will have posted another question which you can respond to:  http://Q_21157773.html


Featured Post

Prepare for your VMware VCP6-DCV exam.

Josh Coen and Jason Langer have prepared the latest edition of VCP study guide. Both authors have been working in the IT field for more than a decade, and both hold VMware certifications. This 163-page guide covers all 10 of the exam blueprint sections.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now