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

trap a download in ie4 to own application.

I would like to know how to trap the download of a file from within my own application and handle the download, i also need to obtain the URL from which they clicked the file, the url that the file is coming from.  If you could post any information, URLS for information, sample source code or anything, it would be appreciated.

0
brunner
Asked:
brunner
1 Solution
 
rwilson032697Commented:
You could set up a helper application that was associated with the appropriate file type. Then ie4 should do it automatically...

0
 
dwwangCommented:
I think it is something concerning registry.

Have you ever used GetRight? It can set Netscape/IE to use it as default downloader, when you enter a url in netscpe, it is first transfered to GetRight. (So sometimes if you imroperly remove GetRight, Netscape will refuse to respond for any url.)

I had serached for registry for "getright" and found that it add something to Netscape's registry information. So you can have a try and find what may help.
0
 
john_mCommented:
To capture the selection of a file to download you will have to write an application that registers itself with IE's COM event interface.

IE supports the DWebBrowserEvents1 and DWebBrowserEvents2 interfaces, both of which have the methods DownloadBegin and DownloadComplete.

I would imagine that you will have to create an event sink in your application, wrap the outgoing interface from IE and register your application in the outgoing interface's ConnectionPoint.

With this done you should be able to receive notification of download events. I don't have time to try this at the moment, but I shall try this evening.


0
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 
zacCommented:
The solution is a registry addition that tells IE what to do with certain URL types, for instance telnet://  with open telnet etc.

By changing or adding values you can cause IE to shell your application - you could even handle http:// yourself rather than IE.......

The entries are stored under HKEY_CLASSES_ROOT in the registry, surprisingly http represents what to do with http:// urls etc....

So if you wanted a URL type called fred you could create a new key called fred etc.....  The full definition of the registry key is as follows....

[HKEY_CLASSES_ROOT]    
[fred]
        (Default) = "URL:Fred Protocol"
        URL Protocol = ""
        [DefaultIcon]
            (Default) = "fred.exe"
        [shell]
            [open]
                [command]
                    (Default) = "c:\<yourpath>\fred.exe %1"

The standard compliment of commands are supported under the shell\open entry (ie you can use other verbs other than command).

If you want further information let me know and I will dig up the MSDN reference for this and post it here....

Good Luck

Zac
0
 
brunnerAuthor Commented:
Zac,

Thanks for that information however for 200 points I am after a little more of an answer and some code as well..

What you have written may technically be correct however it does not help me enough to achieve the result that i need. I don't want to take control of all downloads, only file downloads and only when my application is loaded. There may be some sort of WM_ message that needs to be called or something..

0
 
brunnerAuthor Commented:
Adjusted points to 250
0
 
uuuppzCommented:
As far as I know the answer is much easier than Zac is saying. I think the train of thought  john_m was following sounded promising. Just add the MS Common web browser control to one of your packages (not exactly difficult, Delphi will do it for you very efficiently), then put one on your form. Then catch the begin download event. Check to see if the download is a file, if so tell the component to cancel the download and handle it your self.


0
 
john_mCommented:
Thanks for concluding my thoughts uuuppz - just didn't have time to finish it off myself... Cheers

John.
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

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