Difference between revisions of "URLDownloadToFile"

From wiki.visual-prolog.com

m (categorized)
(update)
Line 4: Line 4:
  
 
<vip>class predicates
 
<vip>class predicates
  urlDownloadToFile : (unsigned,string URL,string File,unsigned32 Reserved,unsigned Callback) -> unsigned32 Hresult
+
    urlDownloadToFile : (unsigned, string URL, string File, unsigned Reserved, unsigned Callback) -> unsigned Hresult
 
         language apicall as "URLDownloadToFile".
 
         language apicall as "URLDownloadToFile".
resolve
 
  urlDownloadToFile externally  % This needs urlmon.lib
 
  
 
class predicates
 
class predicates
 
     doDownload : (string SourceURL, string Destfile).
 
     doDownload : (string SourceURL, string Destfile).
 
clauses
 
clauses
  doDownload(SourceURL, Destfile) :-
+
    doDownload(SourceURL, Destfile) :-
         Hresult = uRLDownloadToFile(0,SourceURL,Destfile,0,0),
+
         Hresult = uRLDownloadToFile(0, SourceURL, Destfile, 0, 0),
         common_exception::checkNoApiException(classInfo, Hresult, "URLDownloadToFile",
+
         if winErrors::s_ok <> Hresult then
            [namedValue("SourceURL", string(SourceURL)), namedValue("Destfile", string(Destfile))]).</vip>
+
            exception::raise_nativeCallException("URLDownloadToFile", Hresult,
 
+
                [namedValue("SourceURL", string(SourceURL)), namedValue("Destfile", string(Destfile))])
You will alo need to add '''urlmon.lib''' to your project, because '''URLDownloadToFile''' is not in the Visual Prolog libs.
+
        end if.</vip>
 
 
'''urlmon.lib''' is part of the [[wikipedia:Microsoft Windows SDK]].
 
  
 
[[Category:Examples]]
 
[[Category:Examples]]
 
[[Category:Internet]]
 
[[Category:Internet]]
 
[[Category:Tips and Tricks]]
 
[[Category:Tips and Tricks]]

Revision as of 19:50, 22 March 2016

For downloading, there is a Windows API called URLDownloadToFile which can do the job. This API needs urlmon.dll which is present in all Windows.

In your program, add the lines:

class predicates
    urlDownloadToFile : (unsigned, string URL, string File, unsigned Reserved, unsigned Callback) -> unsigned Hresult
        language apicall as "URLDownloadToFile".
 
class predicates
    doDownload : (string SourceURL, string Destfile).
clauses
    doDownload(SourceURL, Destfile) :-
        Hresult = uRLDownloadToFile(0, SourceURL, Destfile, 0, 0),
        if winErrors::s_ok <> Hresult then
            exception::raise_nativeCallException("URLDownloadToFile", Hresult,
                [namedValue("SourceURL", string(SourceURL)), namedValue("Destfile", string(Destfile))])
        end if.