ivantu |
Отправлено: 21 Августа, 2019 - 13:05:18
|
Эксперт
Покинул форум
Сообщений всего: 732
Дата рег-ции: Нояб. 2013
Репутация: 14
|
Я использую такой вариант:
CODE:
string ftp="****.zzz.com.ua"; // фтп, исправить на свой
string login="****"; // исправить на свой
string pass="****"; // исправить на свой
int open, _close, connect, file, catalog;
external(INT, "InternetOpen", "InternetOpenA", "Wininet.dll" );
external(INT, "InternetCloseHandle", "InternetCloseHandle", "Wininet.dll" );
external(INT, "InternetConnect", "InternetConnectA", "Wininet.dll" );
external(INT, "FtpSetCurrentDirectory", "FtpSetCurrentDirectoryA", "Wininet.dll" );
external(INT, "FtpGetFile", "FtpGetFileA", "Wininet.dll" );
open=InternetOpen("Microsoft Internet Explorer", 0, 0, 0, 0);
connect=InternetConnect(open, ftp, 21, login, pass, 1, 134217728, 0);
catalog=FtpSetCurrentDirectory(connect, ftp);
file=FtpGetFile(connect, "Имя_файла_на_сервере.exe", "назвать файл и положить в папку с кибор.exe", 0, 0, 0); // скачать файл в папку с кибор
_close=InternetCloseHandle(connect);
if(file==0){sleep(500);}
else messagebox("Файл успешно скачан");
|
|
|
007wan |
Отправлено: 21 Августа, 2019 - 15:18:37
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
ivantu пишет: Я использую такой вариант:
CODE:
string ftp="****.zzz.com.ua"; // фтп, исправить на свой
string login="****"; // исправить на свой
string pass="****"; // исправить на свой
int open, _close, connect, file, catalog;
external(INT, "InternetOpen", "InternetOpenA", "Wininet.dll" );
external(INT, "InternetCloseHandle", "InternetCloseHandle", "Wininet.dll" );
external(INT, "InternetConnect", "InternetConnectA", "Wininet.dll" );
external(INT, "FtpSetCurrentDirectory", "FtpSetCurrentDirectoryA", "Wininet.dll" );
external(INT, "FtpGetFile", "FtpGetFileA", "Wininet.dll" );
open=InternetOpen("Microsoft Internet Explorer", 0, 0, 0, 0);
connect=InternetConnect(open, ftp, 21, login, pass, 1, 134217728, 0);
catalog=FtpSetCurrentDirectory(connect, ftp);
file=FtpGetFile(connect, "Имя_файла_на_сервере.exe", "назвать файл и положить в папку с кибор.exe", 0, 0, 0); // скачать файл в папку с кибор
_close=InternetCloseHandle(connect);
if(file==0){sleep(500);}
else messagebox("Файл успешно скачан");
Спасибо огромное. Сработало. Молодец. Уважуха. |
|
|
007wan |
Отправлено: 21 Августа, 2019 - 16:57:50
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Dantes3000 пишет: 007wan пишет: у меня просто мозг "встал"
я же написал, что надо просто все слова Get в скрипте поменять на Set....и всё работать будет Да блин, я себя плохо чувствую и уже не сображаю капец. |
|
|
007wan |
Отправлено: 23 Августа, 2019 - 15:08:55
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Странно. Не хочет скачивать второй файл, а первый читает отлично, я думаю это из-за флажков в функциях.
Код (Отобразить)CODE:function Update()
{
Stop_Script("", 0);
int Open_Internet, Close, Connect_Internet, Open_File, Catalog, Count_Butes, Get_File;
string FTP_Name = "";
string Login = "";
string Password = "";
string File_Name = "version.txt";
string Version_Program = "1.0";
char New_Version_Program[999999];
Open_Internet = InternetOpen("Microsoft Internet Explorer", 0, 0, 0, 0);
Connect_Internet = InternetConnect(Open_Internet, FTP_Name, INTERNET_DEFAULT_FTP_PORT, Login, Password, INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);
if (Connect_Internet == 0)
{
MessageBeep(MB_ICONEXCLAMATION);
my_message(0, "Не удается подключиться к серверу. ", "prog", MB_OK | MB_ICONERROR | MB_TOPMOST);
}
else
{
Catalog = FtpSetCurrentDirectory(Connect_Internet, FTP_Name);
Open_File = FtpOpenFile(Connect_Internet, File_Name, GENERIC_READ, INTERNET_FLAG_TRANSFER_ASCII, INTERNET_FLAG_NO_CACHE_WRITE, 0);
if(Open_File > 0)
{
InternetReadFile(Open_File, address(#New_Version_Program[0]), sizearray(New_Version_Program), address(#Count_Butes));
if(Count_Butes > 0)
{
if(formatsn(format(#New_Version_Program[0], Count_Butes)) > formatsn(Version_Program))
{
MessageBeep(MB_ICONEXCLAMATION);
int result_message3 = my_message(0, "Найдена новая версия программы."+formatic(13)+formatic(10)+
"Текущая : v"+Version_Program+formatic(13)+formatic(10)+
"Последняя: v"+format(#New_Version_Program[0], Count_Butes)+formatic(13)+formatic(10)+formatic(13)+formatic(10)+
"Внимание! Эта версия программы будет удалена."+formatic(13)+formatic(10)+
"Обновить программу?", "prog", MB_YESNO | MB_ICONQUESTION | MB_TOPMOST);
if (result_message3 == 6)
{
Get_File = FtpGetFile(Connect_Internet, "prog2.exe", "prog2.exe", 0, 0, 0);
if (Get_File == 0)
{
MessageBeep(MB_ICONEXCLAMATION);
my_message(0, "Не удалось скачать ", "prog", MB_OK | MB_ICONERROR | MB_TOPMOST);
}
}
}
else
{
if(formatsn(format(#New_Version_Program[0], Count_Butes)) == formatsn(Version_Program))
{
MessageBeep(MB_OK);
my_message(0, "У вас последняя версия программы.", "prog", MB_OK | MB_ICONINFORMATION | MB_TOPMOST);
}
}
}
Close = InternetCloseHandle(Connect_Internet);
}
}
}
(Добавление)
ivantu пишет: Я использую такой вариант:
CODE:
string ftp="****.zzz.com.ua"; // фтп, исправить на свой
string login="****"; // исправить на свой
string pass="****"; // исправить на свой
int open, _close, connect, file, catalog;
external(INT, "InternetOpen", "InternetOpenA", "Wininet.dll" );
external(INT, "InternetCloseHandle", "InternetCloseHandle", "Wininet.dll" );
external(INT, "InternetConnect", "InternetConnectA", "Wininet.dll" );
external(INT, "FtpSetCurrentDirectory", "FtpSetCurrentDirectoryA", "Wininet.dll" );
external(INT, "FtpGetFile", "FtpGetFileA", "Wininet.dll" );
open=InternetOpen("Microsoft Internet Explorer", 0, 0, 0, 0);
connect=InternetConnect(open, ftp, 21, login, pass, 1, 134217728, 0);
catalog=FtpSetCurrentDirectory(connect, ftp);
file=FtpGetFile(connect, "Имя_файла_на_сервере.exe", "назвать файл и положить в папку с кибор.exe", 0, 0, 0); // скачать файл в папку с кибор
_close=InternetCloseHandle(connect);
if(file==0){sleep(500);}
else messagebox("Файл успешно скачан");
Хотя это работает
(Добавление)
ЕслиCODE:Get_File = FtpGetFile(Connect_Internet, "prog2.exe", "prog2.exe", 0, 0, 0);
if (Get_File == 0)
{
MessageBeep(MB_ICONEXCLAMATION);
my_message(0, "Не удалось скачать ", "prog", MB_OK | MB_ICONERROR | MB_TOPMOST);
} Поместить сразу после Catalog То сработает. Видимо он не видит, потому что условия закрывают его, я пробовал продублировать каталог и тоже не сработало
(Добавление)
Почему тогда после дублирование работает?
Код (Отобразить)CODE:function Update()
{
Stop_Script("", 0);
int Open_Internet, Close, Connect_Internet, Open_File, Catalog, Count_Butes, Get_File;
string FTP_Name = "";
string Login = "";
string Password = "";
string File_Name = ".txt";
string Version_Program = "1.0";
char New_Version_Program[999999];
Open_Internet = InternetOpen("Microsoft Internet Explorer", 0, 0, 0, 0);
Connect_Internet = InternetConnect(Open_Internet, FTP_Name, INTERNET_DEFAULT_FTP_PORT, Login, Password, INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);
if (Connect_Internet == 0)
{
MessageBeep(MB_ICONEXCLAMATION);
my_message(0, "Не удается подключиться к серверу. ", "", MB_OK | MB_ICONERROR | MB_TOPMOST);
}
else
{
Catalog = FtpSetCurrentDirectory(Connect_Internet, FTP_Name);
Open_File = FtpOpenFile(Connect_Internet, File_Name, GENERIC_READ, INTERNET_FLAG_TRANSFER_ASCII, INTERNET_FLAG_NO_CACHE_WRITE, 0);
if(Open_File > 0)
{
InternetReadFile(Open_File, address(#New_Version_Program[0]), sizearray(New_Version_Program), address(#Count_Butes));
if(Count_Butes > 0)
{
if(formatsn(format(#New_Version_Program[0], Count_Butes)) > formatsn(Version_Program))
{
MessageBeep(MB_ICONEXCLAMATION);
int result_message3 = my_message(0, "Найдена новая версия программы."+formatic(13)+formatic(10)+
"Текущая : v"+Version_Program+formatic(13)+formatic(10)+
"Последняя: v"+format(#New_Version_Program[0], Count_Butes)+formatic(13)+formatic(10)+formatic(13)+formatic(10)+
"Внимание! Эта версия программы будет удалена."+formatic(13)+formatic(10)+
"Обновить программу?", "", MB_YESNO | MB_ICONQUESTION | MB_TOPMOST);
if (result_message3 == 6)
{
Open_Internet = InternetOpen("Microsoft Internet Explorer", 0, 0, 0, 0);//после дублирование работает
Connect_Internet = InternetConnect(Open_Internet, FTP_Name, INTERNET_DEFAULT_FTP_PORT, Login, Password, INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);
Catalog = FtpSetCurrentDirectory(Connect_Internet, FTP_Name);//тоже самое как эти 3 строчки
Get_File = FtpGetFile(Connect_Internet, "***.exe", "?*******.exe", 0, 0, 0);
if (Get_File == 0)
{
MessageBeep(MB_ICONEXCLAMATION);
my_message(0, "Не удалось скачать *****", "", MB_OK | MB_ICONERROR | MB_TOPMOST);
}
}
}
else
{
if(formatsn(format(#New_Version_Program[0], Count_Butes)) == formatsn(Version_Program))
{
MessageBeep(MB_OK);
my_message(0, "У вас последняя версия программы.", "", MB_OK | MB_ICONINFORMATION | MB_TOPMOST);
}
}
}
}
}
Close = InternetCloseHandle(Connect_Internet);
}
(Добавление)
Ищите коменты, я там показал почему работает если продублировать эти строчки(Отредактировано автором: 23 Августа, 2019 - 15:09:12) |
|
|
007wan |
Отправлено: 26 Августа, 2019 - 12:28:16
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Короче вот доделал. По-моему так это почти идеал)
В основной код бота (Отобразить)string Version_Program = "1.0";
char New_Version_Program[100000];
if (sendgetweb(#New_Version_Program[0], "Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.0; .NET CLR 1.0.2914)", "GET", "http:/"+"/поменяь на свой.zzz.com.ua", "Versions.txt") > 0)
{
if(formatsn(format(#New_Version_Program[0])) > formatsn(Version_Program))
{
MessageBeep(MB_ICONEXCLAMATION);
int result_message3 = my_message(0, "Найдена новая версия программы."+formatic(13)+formatic(10)+
"Текущая : v"+Version_Program+formatic(13)+formatic(10)+
"Последняя: v"+format(#New_Version_Program[0])+formatic(13)+formatic(10)+formatic(13)+formatic(10)+
"Внимание! Эта версия программы будет удалена."+formatic(13)+formatic(10)+
"Обновить программу?", "поменяь на свой", MB_YESNO | MB_ICONQUESTION | MB_TOPMOST);
if (result_message3 == 6)
{
Stop_Script("", 0);
writeclipboard("ключевое слово другой программе");
int Status = start(path_fold+"поменяь на свой_Update.exe");
if (Status == 0)
{
MessageBeep(MB_ICONEXCLAMATION);
my_message(0, "Не удалось открыть поменяь на свой_Update. Пожалуйста откройте программу в ручную,"+
"либо переместите её в одну папку с модулем обновления и повторите попытку снова.", "поменяь на свой", MB_OK | MB_ICONERROR | MB_TOPMOST);
}
close();
}
}
else
{
if(formatsn(format(#New_Version_Program[0])) == formatsn(Version_Program))
{
MessageBeep(MB_OK);
my_message(0, "У вас последняя версия программы.", "поменяь на свой", MB_OK | MB_ICONINFORMATION | MB_TOPMOST);
}
}
}
else
{
MessageBeep(MB_ICONEXCLAMATION);
my_message(0, "Не удалось подключиться к серверу. Пожалуйста повторите попытку позже.", "поменяь на свой", MB_OK | MB_ICONERROR | MB_TOPMOST);
}
(Добавление)
Для модуля обновления (Отобразить)CODE:external(INT, "MessageBeep", "MessageBeep", "user32.dll");
external(INT, "my_message", "MessageBoxA", "user32.dll");
#definefile "C:\Users\Home\Desktop\МОЁ\Kibor\Constants.txt";
char File_Exe[10000000];
char Command[1];
string path_fold = pathfolder();
string Get_Text;
sleep(2000);
readclipboard(Get_Text);
if (Get_Text == "ключевое слово для другое программы")
{
int count_symbol = sendgetweb(#File_Exe[0], "", "GET", "http:/"+"/поменять на свой.zzz.com.ua", "поменять на свой.exe");
if (count_symbol > 0)
{
if(fopen(path_fold+"поменять на свой.exe", "wb"))
{
fwriteb(#File_Exe[0], count_symbol);
fclose();
writeclipboard("");
MessageBeep(MB_OK);
my_message(0, "Программа была успешна обновлена.", "поменять на свой", MB_OK | MB_ICONINFORMATION | MB_TOPMOST);
}
}
else
{
MessageBeep(MB_ICONEXCLAMATION);
my_message(0, "Не удалось скачать поменять на свой.exe", "поменять на свой", MB_OK | MB_ICONERROR | MB_TOPMOST);
}
}
else
{
int Status = start(path_fold+"поменять на свой.exe");
if (Status == 0)
{
MessageBeep(MB_ICONEXCLAMATION);
my_message(0, "Не удалось открыть поменять на свой. Пожалуйста откройте программу и нажмите 'Обновить', "+
"либо переместите её в одну папку с модулем обновления и повторите попытку снова.", "поменять на свой", MB_OK | MB_ICONERROR | MB_TOPMOST);
}
close();
}
(Добавление)
Работает шикарно.
(Добавление)
Если понравилось, ставьте "-" репутацию и карму. Для меня минус, это как плюс. Если поставите "+", то мне не понравится, поэтому ставьте "-", пожалуйста.
(Добавление)
Спасибо всем, кто помогали!) |
|
|
|