Код: Выделить всё
Module('Windows API Functions')
CloseLONG(LONG),BOOL,PASCAL,PROC
CreateFile(*CSTRING,LONG,LONG,<*?>,LONG,LONG,LONG),LONG,PASCAL,RAW,NAME('CreateFileA')
InternetAttemptConnect(LONG),LONG,PASCAL
InternetCloseLONG(LONG), BOOL, PASCAL, PROC
!InternetOpen(*CSTRING,LONG,<*CSTRING>,<*CSTRING>,LONG),LONG, RAW, PASCAL, NAME('InternetOpenA')
InternetOpenURL(LONG, *CSTRING Url, <*CSTRING Headers>, LONG, LONG, LONG), LONG, RAW, PASCAL, PROC, NAME('InternetOpenUrlA')
InternetReadFile(LONG, *?, LONG, *LONG),BOOL, RAW, PASCAL, PROC
WriteFile(LONG,<*?>,LONG,*LONG,<*?>),BOOL,PASCAL,RAW,PROC
MultiByteToWideChar(long CodePage, long dwFlags, long lpMultiByteStr, long cbMultiByte, |
long lpWideCharStr, long cchWideCharStr),long,pascal
WideCharToMultiByte(long CodePage, long dwFlags, long lpWideCharStr, long cchWideChar, |
long lpMultiByteStr, long cbMultiByte, long lpDefaultChar, |
long lpUsedDefaultChar),long,pascal
lstrlenW(long lpWString),signed,proc,pascal
END
Код: Выделить всё
MyClass.GetFileFromHttp PROCEDURE(STRING RFN, STRING LFN)!,BYTE
BufferSize EQUATE(1024)
hSession LONG
hUrl LONG
hLocal LONG
BufferLength LONG
Result BYTE
Total LONG
MyUrl CSTRING(255)
LocalFile CSTRING(255)
Agent CSTRING('WebCopy 0.000002b')
Buffer GROUP
BYTE,DIM(BufferSize)
END
Dummy STRING(Buffersize),Over(Buffer)
CODE
MyUrl = CLIP(RFN)
LocalFile = CLIP(LFN)
hSession = InternetOpen(Agent,INTERNET_OPEN_TYPE_PRECONFIG,,,0);
IF hSession
hUrl = InternetOpenUrl(hSession, myUrl,,0,0,0)
IF hUrl
hLocal = CreateFile(LocalFile,GENERIC_READ+GENERIC_WRITE,FILE_SHARE_READ+FILE_SHARE_WRITE,,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0)
Result = TRUE
LOOP
BUFFER = ALL('<0>')
InternetReadFile(hUrl, Buffer, Buffersize, BufferLength)
IF BufferLength <> 0 THEN
Total += BufferLength
IF ~WriteFile(hLocal, BUFFER, BufferLength, BufferLength)
MESSAGE('Ошибка при записи файла!','Внимание',ICON:Hand)
Result = FALSE
BREAK
END
END
UNTIL BufferLength = 0
InternetCloseHandle(hUrl)
CloseHandle(hLocal)
ELSE
Result = FALSE
END
InternetCloseHandle(hSession)
ELSE
Result = FALSE
MESSAGE('Ошибка при открытии двери в интернет! :)','Внимание',ICON:Hand)
END
RETURN(Result)