Code:
'------------------------------------------------ ' ' Unattended FTP File Download ' ' May 22nd, 2000 ' ' Developed under WinNT 4.0 SP5 ' WININET.DLL Version 5.00.2314.1003 ' ' Target: PB/CC V2.0, PB/DLL V6.0 ' ' Public Domain - Your own risk ' ' Notes: ' Will launch the default Internet connection ' dialup as written. '------------------------------------------------ #COMPILE EXE #DIM ALL #INCLUDE "WIN32API.INC" ' ' Access types %INTERNET_OPEN_TYPE_PRECONFIG = &H0 ' use registry configuration %INTERNET_OPEN_TYPE_DIRECT = &H1 ' direct TO net %INTERNET_OPEN_TYPE_PROXY = &H3 ' via named proxy %INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY = &H4 ' prevent USING java/script/INS ' Service types %INTERNET_SERVICE_FTP = &H1 %INTERNET_SERVICE_GOPHER = &H2 %INTERNET_SERVICE_HTTP = &H3 ' Port definitions %INTERNET_INVALID_PORT_NUMBER = 0 ' use the protocol-specific DEFAULT %INTERNET_DEFAULT_FTP_PORT = 21 ' DEFAULT FOR FTP servers %INTERNET_DEFAULT_GOPHER_PORT = 70 ' " " gopher " %INTERNET_DEFAULT_HTTP_PORT = 80 ' " " HTTP " %INTERNET_DEFAULT_HTTPS_PORT = 443 ' " " HTTPS " %INTERNET_DEFAULT_SOCKS_PORT = 1080 ' DEFAULT FOR SOCKS firewall servers. %INTERNET_FLAG_PASSIVE = &H8000000 ' used FOR FTP connections ' File transfer methods %FTP_TRANSFER_TYPE_UNKNOWN = &H0 %FTP_TRANSFER_TYPE_ASCII = &H1 %FTP_TRANSFER_TYPE_BINARY = &H2 ' DECLARE FUNCTION InternetOpen LIB "wininet.dll" ALIAS "InternetOpenA" _ (lpszAgent AS LONG, _ ' Pointer to the calling entity dwAccessType AS LONG, _ ' Type of access required lpszProxyName AS LONG, _ ' Pointer to the proxy's name lpszProxyBypass AS LONG, _ ' Pointer to addresses to bypass proxy dwFlags AS LONG) AS LONG ' Unsigned long integer ' Failure: %NULL, Success: Handle to the connection DECLARE FUNCTION InternetConnect LIB "wininet.dll" ALIAS "InternetConnectA" _ (hInternet AS LONG, _ lpszServerName AS LONG, _ nServerPort AS LONG, _ lpszUserName AS LONG, _ lpszPassword AS LONG, _ dwService AS LONG, _ dwFlags AS LONG, _ dwContext AS LONG) AS LONG DECLARE FUNCTION FtpGetFile LIB "wininet.dll" ALIAS "FtpGetFileA" _ (hConnect AS LONG, _ lpszRemoteFile AS LONG, _ lpszNewFile AS LONG, _ fFailIfExists AS LONG, _ dwFlagsAndAttributes AS LONG, _ dwFlags AS LONG, _ dwContext AS LONG) AS LONG DECLARE FUNCTION InternetCloseHandle LIB "wininet.dll" ALIAS "InternetCloseHandle" _ (hInternet AS LONG) AS LONG ' ' Globals GLOBAL hIOpen AS LONG GLOBAL hIConnect AS LONG ' FUNCTION PBMAIN() ' LOCAL Agent AS ASCIIZ * 256 LOCAL TheFtpServer AS ASCIIZ * 256 LOCAL rsvp AS LONG LOCAL RemoteFile AS ASCIIZ * 256 LOCAL LocalFile AS ASCIIZ * 256 ' Agent = "PB/DLL WinInet" ' <== customize HTTP response with this ' ' Open an Internet session as predefined in the registry hIOpen = InternetOpen(BYVAL VARPTR(Agent), _ BYVAL %INTERNET_OPEN_TYPE_PRECONFIG, _ BYVAL %NULL, _ BYVAL %NULL, _ BYVAL 0) ' If it fails exit IF hIOpen = %NULL THEN MSGBOX "Could not open an Internet connection" EXIT FUNCTION END IF ' TheFtpServer = "152.127.113.2" ' <=== your FTP server here hIConnect = InternetConnect(BYVAL hIOpen, _ BYVAL VARPTR(TheFtpServer), _ BYVAL %INTERNET_INVALID_PORT_NUMBER, _ BYVAL %NULL, _ BYVAL %NULL, _ BYVAL %INTERNET_SERVICE_FTP, _ BYVAL 0, _ BYVAL 0) IF hIConnect = %NULL THEN InternetCloseHandle(hIOpen) MSGBOX "FTP Connect Failed " & STR$(hIConnect) EXIT FUNCTION END IF ' RemoteFile = "/utilities/dat-4067.zip" ' <== the file to GET LocalFile = "C:\TEMP\dat-4067.zip" ' <== where you want to PUT it rsvp = FtpGetFile(BYVAL hIConnect, _ BYVAL VARPTR(RemoteFile), _ BYVAL VARPTR(LocalFile), _ BYVAL %FALSE, _ BYVAL %FILE_ATTRIBUTE_NORMAL, _ BYVAL %FTP_TRANSFER_TYPE_UNKNOWN, _ BYVAL 0) IF rsvp = %FALSE THEN MSGBOX "File Transfer failed." END IF ' ' Close all the handles InternetCloseHandle(hIConnect) InternetCloseHandle(hIOpen) END FUNCTION
Comment