Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (8): [1] 2 3 4 5 6 7 8 »   

> Описание: Скачивание файлов с выводом полосы процесса загрузки и их распаковка
ivantu
Отправлено: 08 Апреля, 2021 - 00:44:55
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013  
Репутация: 14




Выделено в отдельную тему из темы "Версия 5.43 Работа с HTTPS протоколом"
может ли sendgetweb вернуть к примеру текущие полученные байты, не общий размер а сколько получено на данный момент

CODE:
int count_byte=sendgetweb(#textb[0], "Mozilla", "GET", "http:/"+"/site.ru", "main.exe");


т.к. count_byte вернет общее количество после загрузки, а мне нужно получить значение во время загрузки.
Или есть какое то другое решение...

(Отредактировано автором: 08 Апреля, 2021 - 00:45:25)

 
 Top
Zireael
Отправлено: 08 Апреля, 2021 - 02:13:43
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017  
Репутация: 585




Выделено в отдельную тему из темы "Версия 5.43 Работа с HTTPS протоколом"
 Цитата:
Или есть какое то другое решение...

https://kibor-bot.com/forum/topi...74792#1561374792
 
 Top
ivantu
Отправлено: 08 Апреля, 2021 - 08:18:33
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013  
Репутация: 14




Выделено в отдельную тему из темы "Версия 5.43 Работа с HTTPS протоколом"
[quote=Zireael](для просмотра ссылки Вам необходимо авторизоваться) /quote]
Посмотрел, и что то не понял где решение (
 
 Top
ivantu
Отправлено: 08 Апреля, 2021 - 10:28:46
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013  
Репутация: 14




Выделено в отдельную тему из темы "Версия 5.43 Работа с HTTPS протоколом"
Вообще у меня задумка такая, пока файл закачивается вывести на экран прогрес бар, на форуме нашел:

CODE:

#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, "CreateWindow", "CreateWindowExA", "User32.dll");
external(INT, "GetWindowLong", "GetWindowLongA", "User32.dll");

int histance, progress_bar1, progress_bar2;

createdialog(0);
showdialog(0, "Загрузка ресурсов", 500, 400, 400, 100, 1, 1);

for(int i=0; i<100; i++)
{
//sendmessage(PBM_SETPOS, i, 0, formatiw(progress_bar1));
sendmessage(PBM_SETPOS, i, 0, formatiw(progress_bar2));
sleep(10);
}


function getmessage(0, WM_CREATE)
{
histance=GetWindowLong(gethwnd(0), GWL_HINSTANCE);
//progress_bar1=CreateWindow(0, "msctls_progress32", "", WS_VISIBLE | WS_CHILD, 10, 10, 310, 25, gethwnd(0), 0, histance, 0, 0);
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+100*65536, formatiw(progress_bar1)); // минимальное и максимальное значение (от 0 до 100)
//sendmessage(PBM_SETRANGE, 0, 0+100*65536, formatiw(progress_bar2));

sendmessage(PBM_SETBARCOLOR, 0, 14130224, formatiw(progress_bar2));///черная полоса
sendmessage(PBM_SETBKCOLOR, 0, 12631996, formatiw(progress_bar2));/// красный фон

}
 
 Top
Zireael
Отправлено: 08 Апреля, 2021 - 11:09:28
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017  
Репутация: 585




Выделено в отдельную тему из темы "Версия 5.43 Работа с HTTPS протоколом"
 Цитата:
Посмотрел, и что то не понял где решение

Файл скачивается блоками по 1024 байта, после вызова InternetReadFile можно выполнить нужный код.
 
 Top
ivantu
Отправлено: 08 Апреля, 2021 - 11:48:29
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013  
Репутация: 14




Выделено в отдельную тему из темы "Версия 5.43 Работа с HTTPS протоколом"
Сложновато для меня даже не понимаю как там сохранить полученные байты на диск...
 
 Top
Kibor
Отправлено: 08 Апреля, 2021 - 11:58:44
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Перенесено из темы "Версия 5.43 Работа с HTTPS протоколом"
 ivantu пишет:
Вообще у меня задумка такая, пока файл закачивается вывести на экран прогрес бар, на форуме нашел:
Что бы его вывести, надо знать ожидаемый объем данных. Размер ожидаемых количества байт в Size_Bute

Процесс загрузки (Отобразить)

(Добавление)
 ivantu пишет:
Сложновато для меня даже не понимаю как там сохранить полученные байты на диск...

Что бы скачать файл и сохранить его на диске, надо просто указать его в адресе и вместо string fr использовать массив char, который надо потом сохранить в файле в бинарном режиме.
(Добавление)
При скачивание файла на сервере он должен быть без расширения.
Пример скачивания программы VisualEditor с темы Новый Визуальный редактор, сохранения ее на диск C и ее запуск.
Программа скачивается с(для просмотра ссылки Вам необходимо авторизоваться)

Скачивание, сохранание и запуск программы с сайта (Отобразить)

(Добавление)
Поправил код..

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


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");


char szData[2000000];//С запасом



///////////////////////////////////////////////////////////////////



int Size_B=0;

load();
messagebox ("Загружено "+format(Size_B)+" байт");


if (fopen ("C:\VisualEditor.exe", "wb")!=0)
{
fwriteb(#szData[0], Size_B);//Запись по указателю на масив char
fclose();
}
start("C:\VisualEditor.exe");

/////////////////////////////////////////////////////////////////////////////////




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]),
sizearray(szData)-1,
address(#dwBytesRead));
Size_B=Size_B+dwBytesRead;
if (bRead == FALSE || dwBytesRead == 0) break;
}

InternetCloseHandle(hRequest);// закрываем запрос
}

InternetCloseHandle(hConnect);// закрываем сессию
}

InternetCloseHandle(hInternet);// закрываем WinInet
}
}


Или проще с помощью sendgetweb
CODE:
char szData[2000000];//С запасом
int Size_B=sendgetweb(#szData[0], "", "GET", "https:/^/kibor-bot.com", "files/VisualEditor");
if (Size_B)
{
messagebox ("Загружено "+format(Size_B)+" байт");
if (fopen ("C:\VisualEditor.exe", "wb")!=0)
{
fwriteb(#szData[0], Size_B);//Запись по указателю на масив char
fclose();
}
start("C:\VisualEditor.exe");
}
 
 Top
ivantu
Отправлено: 08 Апреля, 2021 - 13:19:35
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013  
Репутация: 14




Перенесено из темы "Версия 5.43 Работа с HTTPS протоколом"
Земной поклон, буду изучать!
 
 Top
Kibor
Отправлено: 08 Апреля, 2021 - 13:26:17
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Перенесено из темы "Версия 5.43 Работа с HTTPS протоколом"
 ivantu пишет:
Земной поклон, буду изучать!

За одно и виз редактор протестируете))

А вообще проще с помощью sendgetweb
CODE:
char szData[2000000];//С запасом
int Size_B=sendgetweb(#szData[0], "", "GET", "https:/^/kibor-bot.com", "files/VisualEditor");
if (Size_B)
{
messagebox ("Загружено "+format(Size_B)+" байт");
if (fopen ("C:\VisualEditor.exe", "wb")!=0)
{
fwriteb(#szData[0], Size_B);//Запись по указателю на масив char
fclose();
}
start("C:\VisualEditor.exe");
}
 
 Top
ivantu
Отправлено: 08 Апреля, 2021 - 13:36:31
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013  
Репутация: 14




Перенесено из темы "Версия 5.43 Работа с HTTPS протоколом"
 Kibor пишет:
А вообще проще с помощью sendgetweb

Проще то я знаю что проще с него и начал, но как к этому всему прикрутить индикатор загрузки... там нет промежуточных значений, просто общий объем, может Вы знаете как ))
 
 Top
Страниц (8): [1] 2 3 4 5 6 7 8 »
Сейчас эту тему просматривают: 5 (гостей: 5, зарегистрированных: 0)
« Вопросы и решение проблем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by