Здравствуйте
Нужно эмулировать для одного сайта отключение от интернета на одно мгновение, тольк чтобы данные на странице обновились. Думаю записать в файл hosts название сайта и тут же стереть. Как настройки для кибора записывать знаю, а как проверить, что если эта строчка есть (ya.ru), то не записывать и когда стирать, то только её ? Может по другому как то можно эмулировать на мгновение потерю интернета....
1. konctantin777 - 26 Ноября, 2020 - 06:52:51 - перейти к сообщению
2. ivantu - 26 Ноября, 2020 - 07:11:21 - перейти к сообщению
Через командную строку можно:
name=^"Ethernet^" - указать имя своего подключения
CODE:
#define TH32CS_SNAPPROCESS 2
#define PROCESS_ALL_ACCESS 2097151
#define STARTF_USESHOWWINDOW 1
external(INT, "CreateProcess", "CreateProcessA", "Kernel32.dll");
external(INT, "CreateToolhelp32Snapshot", "CreateToolhelp32Snapshot", "Kernel32.dll");
external(INT, "Process32First", "Process32First", "Kernel32.dll");
external(INT, "Process32Next", "Process32Next", "Kernel32.dll");
external(INT, "CloseHandle", "CloseHandle", "Kernel32.dll");
system_("/c "+"netsh interface set interface name=^"Ethernet^" admin=DISABLED"); // ENABLED
function system_(string CommandLine){
int STARTUPINFOA[17], PROCESS_INFORMATION[4];
initialarray(#STARTUPINFOA[0], 0);
STARTUPINFOA[0]=68;
STARTUPINFOA[11]=STARTF_USESHOWWINDOW; // не показывать окно
if(CreateProcess(0, "cmd.exe "+CommandLine, 0, 0, 0, 0, 0, 0, address(#STARTUPINFOA[0]), address(#PROCESS_INFORMATION[0])))
{
while(findprocess(PROCESS_INFORMATION[2]))sleep(10); // ждать пока процесс существует
CloseHandle(PROCESS_INFORMATION[0]);
}
}
function findprocess(int PID)
{
char PROCESSENTRY32[296];
int exists=0, hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(hSnapshot)
{
writeaddress(sizearray(PROCESSENTRY32), address(#PROCESSENTRY32[0]));
Process32First(hSnapshot, address(#PROCESSENTRY32[0]));
while(Process32Next(hSnapshot, address(#PROCESSENTRY32[0])))
{
if(codhexi(#PROCESSENTRY32[8], 4) == PID){exists++; break;}
}
CloseHandle(hSnapshot);
if(exists)return 1;
}
return 0;
}
#define TH32CS_SNAPPROCESS 2
#define PROCESS_ALL_ACCESS 2097151
#define STARTF_USESHOWWINDOW 1
external(INT, "CreateProcess", "CreateProcessA", "Kernel32.dll");
external(INT, "CreateToolhelp32Snapshot", "CreateToolhelp32Snapshot", "Kernel32.dll");
external(INT, "Process32First", "Process32First", "Kernel32.dll");
external(INT, "Process32Next", "Process32Next", "Kernel32.dll");
external(INT, "CloseHandle", "CloseHandle", "Kernel32.dll");
system_("/c "+"netsh interface set interface name=^"Ethernet^" admin=DISABLED"); // ENABLED
function system_(string CommandLine){
int STARTUPINFOA[17], PROCESS_INFORMATION[4];
initialarray(#STARTUPINFOA[0], 0);
STARTUPINFOA[0]=68;
STARTUPINFOA[11]=STARTF_USESHOWWINDOW; // не показывать окно
if(CreateProcess(0, "cmd.exe "+CommandLine, 0, 0, 0, 0, 0, 0, address(#STARTUPINFOA[0]), address(#PROCESS_INFORMATION[0])))
{
while(findprocess(PROCESS_INFORMATION[2]))sleep(10); // ждать пока процесс существует
CloseHandle(PROCESS_INFORMATION[0]);
}
}
function findprocess(int PID)
{
char PROCESSENTRY32[296];
int exists=0, hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(hSnapshot)
{
writeaddress(sizearray(PROCESSENTRY32), address(#PROCESSENTRY32[0]));
Process32First(hSnapshot, address(#PROCESSENTRY32[0]));
while(Process32Next(hSnapshot, address(#PROCESSENTRY32[0])))
{
if(codhexi(#PROCESSENTRY32[8], 4) == PID){exists++; break;}
}
CloseHandle(hSnapshot);
if(exists)return 1;
}
return 0;
}
name=^"Ethernet^" - указать имя своего подключения
3. konctantin777 - 26 Ноября, 2020 - 11:19:33 - перейти к сообщению
Ок, спасибо. Буду пробовать будет ли обратно через 5мсек включаться )
4. konctantin777 - 27 Ноября, 2020 - 03:44:43 - перейти к сообщению
ivantu пишет:
Через командную строку можно:
Долго получается. Надо именно, чтобы на мгновение отключился и снова включился...А через hosts- mytech.cnord.net записывает, а 127.0.0.1 mytech.cnord.net не записывает.
Можно как то ещё сделать, чтобы на мгновение сайт отключать и так каждые 100мсек. ?
5. ivantu - 27 Ноября, 2020 - 03:59:32 - перейти к сообщению
Пример кода можно?
И для чего такое извращение?
Может есть другой путь?
И для чего такое извращение?
Может есть другой путь?
6. konctantin777 - 27 Ноября, 2020 - 04:06:09 - перейти к сообщению
CODE:
//открываем файл для записи "w". Если файл существует он будет перезаписан.
//Для добавления в конец надо открывать с "a"
if (fopen ("C:\Windows\System32\drivers\etc\hosts", "w")!=0)
{//если открылся
fwrite(mytech.cnord.net);//записываем в файл
fclose();//закрываем файл
}
//Для добавления в конец надо открывать с "a"
if (fopen ("C:\Windows\System32\drivers\etc\hosts", "w")!=0)
{//если открылся
fwrite(mytech.cnord.net);//записываем в файл
fclose();//закрываем файл
}
Записывает норм
А если добавляем впереди 127.0.0.1, чтобы блокировал сайт, то уже нет..
(Добавление)
ivantu пишет:
И для чего такое извращение?
Может есть другой путь?
Может есть другой путь?
Чтобы обновились данные на веб странице без её перезагрузки.
Не специалист в вебсокетах....
7. ivantu - 27 Ноября, 2020 - 04:12:43 - перейти к сообщению
Нет кавычек
CODE:
//открываем файл для записи "w". Если файл существует он будет перезаписан.
//Для добавления в конец надо открывать с "a"
if (fopen ("C:\Windows\System32\drivers\etc\hosts", "w")!=0)
{//если открылся
fwrite("127.0.0.1 mytech.cnord.net");//записываем в файл
fclose();//закрываем файл
}
//открываем файл для записи "w". Если файл существует он будет перезаписан.
//Для добавления в конец надо открывать с "a"
if (fopen ("C:\Windows\System32\drivers\etc\hosts", "w")!=0)
{//если открылся
fwrite("127.0.0.1 mytech.cnord.net");//записываем в файл
fclose();//закрываем файл
}
8. konctantin777 - 27 Ноября, 2020 - 04:17:10 - перейти к сообщению
Да блин... Спасибо !!