CODE:
#define NULL 0
#define FALSE 0
#define INTERNET_OPEN_TYPE_PRECONFIG 0
#define INTERNET_DEFAULT_HTTPS_PORT 443
//#define INTERNET_DEFAULT_HTTP_PORT 80
#define INTERNET_SERVICE_HTTP 3
#define INTERNET_FLAG_SECURE 8388608
#define INTERNET_FLAG_NO_CACHE_WRITE 67108864
#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define PBM_SETRANGE32 1030
#define PBM_SETPOS 1026
#define PBS_SMOOTH 1
#define PBM_SETBARCOLOR 1033
#define PBM_SETBKCOLOR 8193
external(INT, "InternetOpen", "InternetOpenA", "Wininet.dll");
external(INT, "InternetConnect", "InternetConnectA", "Wininet.dll");
external(INT, "HttpOpenRequest", "HttpOpenRequestA", "Wininet.dll");
external(INT, "HttpSendRequest", "HttpSendRequestA", "Wininet.dll");
external(INT, "InternetReadFile", "InternetReadFile", "Wininet.dll");
external(INT, "InternetCloseHandle", "InternetCloseHandle", "Wininet.dll");
external(INT, "CreateWindow", "CreateWindowExA", "User32.dll");
char szData[9999999];//С запасом
int Size_Bute=1117184;//Сколько байт ждем
string path_to_file_name="VisualEditor";
int histance, progress_bar1, progress_bar2;
createdialog(0);
showdialog(0, "Загрузка ресурсов", 100, 100, 400, 100, 1, 1);
int Size_B=0;
int read_b=1024; //Какими порциями и с какой скоростью загружать 1024
load("VisualEditor");
//sendmessage(PBM_SETPOS, Size_B, 0, formatiw(progress_bar2));
messagebox ("Загружено "+format(Size_B)+" байт");
if (fopen ("C:\VisualEditor.exe", "wb")!=0)
{
fwriteb(#szData[0], Size_B);//Запись по указателю на масив char
fclose();
start("C:\VisualEditor.exe");
}
function getmessage(0, WM_CREATE)
{
progress_bar2=CreateWindow(0, "msctls_progress32", "", PBS_SMOOTH | WS_VISIBLE | WS_CHILD, 5, 15, 380, 25, gethwnd(0), 0, 0, 0);
sendmessage(PBM_SETRANGE32, 0, Size_Bute/1000, formatiw(progress_bar2)); // минимальное и максимальное значение (от 0 до Size_Bute)
sendmessage(PBM_SETBARCOLOR, 0, 65280, formatiw(progress_bar2));///зелёная полоса
sendmessage(PBM_SETBKCOLOR, 0, 255, formatiw(progress_bar2));/// красный фон
}
function load(string path_to_file)
{
Size_B=0;
int hInternet = InternetOpen(
"My",
INTERNET_OPEN_TYPE_PRECONFIG,
NULL,NULL,
0);
if (hInternet != NULL) // открываем HTTP сессию
{
int hConnect = InternetConnect(
hInternet,
"rdkik.ru", // Адрес сайда
INTERNET_DEFAULT_HTTPS_PORT,
NULL,NULL,
INTERNET_SERVICE_HTTP,
0,
1);
if (hConnect != NULL)
{
int hRequest = HttpOpenRequest(
hConnect,
"POST",
path_to_file, // Путь к файлу
NULL,
NULL,
0,
INTERNET_FLAG_SECURE | INTERNET_FLAG_NO_CACHE_WRITE,
0);
if (hRequest != NULL) // посылаем запрос
{
int bSend = HttpSendRequest(hRequest,
NULL,
0,
NULL,
0);
int dwBytesRead;
loop()
{
int bRead = InternetReadFile(
hRequest,
address(#szData[Size_B]),
read_b,
address(#dwBytesRead));
Size_B=Size_B+dwBytesRead;
textout(0, 0, 0, format(Size_B), 1);
sendmessage(PBM_SETPOS, Size_B/1000, 0, formatiw(progress_bar2));
//sleep(1);
if (bRead == FALSE || dwBytesRead == 0) break;
}
InternetCloseHandle(hRequest);// закрываем запрос
}
InternetCloseHandle(hConnect);// закрываем сессию
}
InternetCloseHandle(hInternet);// закрываем WinInet
}
}