Difference between revisions of "URLDownloadToFile"

From wiki.visual-prolog.com

(clarify)
(simplify)
 
Line 1: Line 1:
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 versions.
+
For downloading, there is a Windows API called '''URLDownloadToFile''' which can do the job.
  
 
In your program, add the lines:  
 
In your program, add the lines:  
  
<vip>class predicates
+
<vip>
     urlDownloadToFile : (unsigned, string URL, string File, unsigned Reserved, unsigned Callback) -> unsigned Hresult
+
class predicates
        language apicall as "URLDownloadToFile".
+
     uRLDownloadToFile : (handle, string URL, string File, unsigned Reserved, unsigned Callback)  
 +
        -> unsigned Hresult language apicall.
  
 
class predicates
 
class predicates
     doDownload : (string SourceURL, string Destfile).
+
     doDownload : (string SourceURL, string Destfile) [used].
 
clauses
 
clauses
 
     doDownload(SourceURL, Destfile) :-
 
     doDownload(SourceURL, Destfile) :-
         Hresult = uRLDownloadToFile(0, SourceURL, Destfile, 0, 0),
+
         Hresult = uRLDownloadToFile(nullHandle, SourceURL, Destfile, 0, 0),
 
         if winErrors::s_ok <> Hresult then
 
         if winErrors::s_ok <> Hresult then
 
             exception::raise_nativeCallException("URLDownloadToFile", Hresult,
 
             exception::raise_nativeCallException("URLDownloadToFile", Hresult,
 
                 [namedValue("SourceURL", string(SourceURL)), namedValue("Destfile", string(Destfile))])
 
                 [namedValue("SourceURL", string(SourceURL)), namedValue("Destfile", string(Destfile))])
         end if.</vip>
+
         end if.
 +
</vip>
  
 
[[Category:Examples]]
 
[[Category:Examples]]
 
[[Category:Internet]]
 
[[Category:Internet]]
 
[[Category:Tips and Tricks]]
 
[[Category:Tips and Tricks]]

Latest revision as of 17:16, 19 February 2019

For downloading, there is a Windows API called URLDownloadToFile which can do the job.

In your program, add the lines:

class predicates
    uRLDownloadToFile : (handle, string URL, string File, unsigned Reserved, unsigned Callback) 
        -> unsigned Hresult language apicall.
 
class predicates
    doDownload : (string SourceURL, string Destfile) [used].
clauses
    doDownload(SourceURL, Destfile) :-
        Hresult = uRLDownloadToFile(nullHandle, 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.