Download a file from the internet to your hard drive. Updated January 28, 2006
See issue #136 and issue #141 of the Liberty BASIC Newsletter for articles on the usage.
'Download html from given 'URL to file on disk. ' 'Minimum availability Internet Explorer 3.0 'Minimum operating systems Windows NT 4.0, Windows 95 ' 'check for valid URL for HTML page: u$ = MultiByteToWideChar$("http://www.libertybasic.com/index.html") if u$ = "" then print "Unable to convert URL to unicode string." end end if 'if result = 0, URL is valid result = ValidURL(u$) if result = 0 then 'download html from libertybasic.com downloadresult = DownloadToFile("http://www.libertybasic.com/index.html", DefaultDir$ + "\test.htm") if downloadresult <> 0 then print "Error downloading libertybasic.com HTML file." open DefaultDir$ + "\test.htm" for input as #f test$ = input$(#f, LOF(#f)) close #f print test$ 'print HTML from file into mainwin print : print print "The text above was downloaded from http://www.libertybasic.com/" else print "Invalid URL:"; u$ end if 'now attempt to download the banner: result = DownloadToFile("http://www.libertybasic.com/lb3banner.jpg", DefaultDir$ + "\banner.jpg") if result <> 0 then print "Error downloading Liberty BASIC banner." else run "mspaint.exe " + chr$(34) + DefaultDir$ + "\banner.jpg" + chr$(34) print : print : print "Done" end if wait Function DownloadToFile(urlfile$, localfile$) open "URLmon" for dll as #url calldll #url, "URLDownloadToFileA",_ 0 as long,_ 'null urlfile$ as ptr,_ 'url to download localfile$ as ptr,_ 'save file name 0 as long,_ 'reserved, must be 0 0 as long,_ 'callback address, can be 0 DownloadToFile as ulong '0=success close #url end function Function ValidURL(urlfile$) open "URLmon" for dll as #url calldll #url, "IsValidURL",_ 0 as long,_ 'ignored, must be 0 urlfile$ as ptr,_ 'urlfile to check 0 as ulong,_ 'ignored, must be 0 ValidURL as long close #url end function function MultiByteToWideChar$(String$) 'converts any string into unicode CodePage = 0 : dwFlags = 0 cchMultiByte = -1 lpMultiByteStr$ = String$ cchWideChar = len(String$) * 3 lpWideCharStr$ = space$(cchWideChar) calldll #kernel32, "MultiByteToWideChar", _ CodePage as ulong, _ 'CP_ACP=0, ansi code page dwFlags as ulong, _ 'use 0, flags for character translation lpMultiByteStr$ as ptr,_'the ascii string to convert cchMultiByte as long, _ 'len of string, -1 for null-terminated string lpWideCharStr$ as ptr, _'buffer for returned ansi string cchWideChar as long, _ 'size in wide characters of string buffer result as long 'returns number of wide characters written to buffer if result = 0 then MultiByteToWideChar$ = "" else MultiByteToWideChar$ = left$(lpWideCharStr$, result * 2) end if end function