ivantu |
Отправлено: 08 Апреля, 2021 - 22:59:45
|
Эксперт
Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013
Репутация: 14
|
Перенесено из темы "Версия 5.43 Работа с HTTPS протоколом" Покажите где намудрил, целый вечер ковыряюсь ))
Код (Отобразить)CODE:
#define NULL 0
#define FALSE 0
#define INTERNET_OPEN_TYPE_PRECONFIG 0
#define INTERNET_DEFAULT_HTTPS_PORT 443
#define INTERNET_SERVICE_HTTP 3
#define INTERNET_FLAG_SECURE 8388608
#define INTERNET_FLAG_NO_CACHE_WRITE 67108864
#define GWL_HINSTANCE -6
#define WS_VISIBLE 268435456
#define WS_CHILD 1073741824
#define PBM_SETRANGE 1025
#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");
external(INT, "GetWindowLong", "GetWindowLongA", "User32.dll");
int Size_Bute=35000; //Сколько байт ждем
int histance, progress_bar1, progress_bar2;
char szData[2000000];//С запасом
///////////////////////////////////////////////////////////////////
int Size_B=0;
string fr;
int read_b=50; //Какими порциями и с какой скоростью загружать 1024
createdialog(0);
showdialog(0, "Загрузка ресурсов", 100, 100, 400, 100, 1, 1);
enabletimer(0);
load();
disabletimer(0);
messagebox ("Загружено "+format(Size_B)+" байт");
sendmessage(PBM_SETPOS, Size_B, 0, formatiw(progress_bar2));
if (fopen ("C:\VisualEditor.exe", "wb")!=0)
{
fwriteb(#szData[0], Size_B);//Запись по указателю на масив char
fclose();
}
start("C:\VisualEditor.exe");
/////////////////////////////////////////////////////////////////////////////////
function getmessage(0, WM_CREATE)
{
histance=GetWindowLong(gethwnd(0), GWL_HINSTANCE);
progress_bar2=CreateWindow(0, "msctls_progress32", "", PBS_SMOOTH | WS_VISIBLE | WS_CHILD, 5, 15, 380, 25, gethwnd(0), 0, histance, 0, 0);
sendmessage(PBM_SETRANGE, 0, 0+Size_Bute*65536, formatiw(progress_bar2)); // минимальное и максимальное значение (от 0 до Size_Bute)
sendmessage(PBM_SETBARCOLOR, 0, 14130224, formatiw(progress_bar2));///черная полоса
sendmessage(PBM_SETBKCOLOR, 0, 12631996, formatiw(progress_bar2));/// красный фон
}
CREATE_TIMER(0, 10)//Номер таймера, выполнение таймера через мсек.
{
sendmessage(PBM_SETPOS, Size_B, 0, formatiw(progress_bar2));
}
function load()
{
int hInternet = InternetOpen(
"My bot",
INTERNET_OPEN_TYPE_PRECONFIG,
NULL,NULL,
0);
if (hInternet != NULL) // открываем HTTP сессию
{
int hConnect = InternetConnect(
hInternet,
"kibor-bot.com",
INTERNET_DEFAULT_HTTPS_PORT,
NULL,NULL,
INTERNET_SERVICE_HTTP,
0,
1);
if (hConnect != NULL)
{
int hRequest = HttpOpenRequest(
hConnect,
"POST",
"files/VisualEditor",
NULL,
NULL,
0,
INTERNET_FLAG_SECURE | INTERNET_FLAG_NO_CACHE_WRITE,
1);
if (hRequest != NULL) // посылаем запрос
{
int bSend = HttpSendRequest(hRequest,
NULL,
0,
NULL,
0);
new char szData[read_b];
int dwBytesRead;
loop()
{
int bRead = InternetReadFile(
hRequest,
address(#szData[0]),
sizearray(szData)-1,
address(#dwBytesRead));
szData[dwBytesRead]=0;
fr=fr+format(#szData[0]);
Size_B=Size_B+dwBytesRead;
if (bRead == FALSE || dwBytesRead == 0) break;
}
delete szData;
InternetCloseHandle(hRequest);// закрываем запрос
}
InternetCloseHandle(hConnect);// закрываем сессию
}
InternetCloseHandle(hInternet);// закрываем WinInet
}
}
(Добавление)
есть подозрения что намудрил где то тут:
CODE:
loop()
{
int bRead = InternetReadFile(
hRequest,
address(#szData[0]),
sizearray(szData)-1,
address(#dwBytesRead));
szData[dwBytesRead]=0;
fr=fr+format(#szData[0]);
Size_B=Size_B+dwBytesRead;
if (bRead == FALSE || dwBytesRead == 0) break;
}
|
|
|
Zireael |
Отправлено: 09 Апреля, 2021 - 04:00:38
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Перенесено из темы "Версия 5.43 Работа с HTTPS протоколом" PBM_SETRANGE устанавливает максимальное значение 65535, нужно использовать PBM_SETRANGE32 для установки больших значений.
Скачать VisualEditor.exe и отобразить процесс загрузки (Отобразить)CODE:#define NULL 0
#define FALSE 0
#define INTERNET_OPEN_TYPE_PRECONFIG 0
#define INTERNET_DEFAULT_HTTPS_PORT 443
#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[2000000];//С запасом
int Size_Bute=1117184;//Сколько байт ждем
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
enabletimer(0);
load();
disabletimer(0);
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");
}
CREATE_TIMER(0, 10)//Номер таймера, выполнение таймера через мсек.
{
textout(0, 0, 0, format(Size_B), 1);
sendmessage(PBM_SETPOS, Size_B/1000, 0, formatiw(progress_bar2));
}
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()
{
int hInternet = InternetOpen(
"My bot",
INTERNET_OPEN_TYPE_PRECONFIG,
NULL,NULL,
0);
if (hInternet != NULL) // открываем HTTP сессию
{
int hConnect = InternetConnect(
hInternet,
"kibor-bot.com",
INTERNET_DEFAULT_HTTPS_PORT,
NULL,NULL,
INTERNET_SERVICE_HTTP,
0,
1);
if (hConnect != NULL)
{
int hRequest = HttpOpenRequest(
hConnect,
"POST",
"files/VisualEditor",
NULL,
NULL,
0,
INTERNET_FLAG_SECURE | INTERNET_FLAG_NO_CACHE_WRITE,
1);
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;
sleep(1);
if (bRead == FALSE || dwBytesRead == 0) break;
}
InternetCloseHandle(hRequest);// закрываем запрос
}
InternetCloseHandle(hConnect);// закрываем сессию
}
InternetCloseHandle(hInternet);// закрываем WinInet
}
}
Убрать sleep(1); из функции load(), тогда скачает быстро. |
|
|
Kibor |
Отправлено: 09 Апреля, 2021 - 06:15:50
|
Эксперт
Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
Перенесено из темы "Версия 5.43 Работа с HTTPS протоколом"
Или без таймера процесс загрузки (Отобразить)CODE:#define NULL 0
#define FALSE 0
#define INTERNET_OPEN_TYPE_PRECONFIG 0
#define INTERNET_DEFAULT_HTTPS_PORT 443
#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[2000000];//С запасом
int Size_Bute=1117184;//Сколько байт ждем
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();
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()
{
int hInternet = InternetOpen(
"My bot",
INTERNET_OPEN_TYPE_PRECONFIG,
NULL,NULL,
0);
if (hInternet != NULL) // открываем HTTP сессию
{
int hConnect = InternetConnect(
hInternet,
"kibor-bot.com",
INTERNET_DEFAULT_HTTPS_PORT,
NULL,NULL,
INTERNET_SERVICE_HTTP,
0,
1);
if (hConnect != NULL)
{
int hRequest = HttpOpenRequest(
hConnect,
"POST",
"files/VisualEditor",
NULL,
NULL,
0,
INTERNET_FLAG_SECURE | INTERNET_FLAG_NO_CACHE_WRITE,
1);
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
}
} |
|
|
ivantu |
Отправлено: 09 Апреля, 2021 - 10:53:39
|
Эксперт
Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013
Репутация: 14
|
Перенесено из темы "Версия 5.43 Работа с HTTPS протоколом"
Dantes3000 пишет: а ты хоть раз папки скачивал хоть от куда-то?
Не раз, вопрос как это реализовано ?
Скрин(Отредактировано автором: 09 Апреля, 2021 - 10:54:44) |
|
|
|