Показать сообщение отдельно
  #1  
Старый 17.06.2015, 20:14
RDLNEO RDLNEO вне форума
Прохожий
 
Регистрация: 17.06.2015
Сообщения: 5
Версия Delphi: 9
Репутация: 10
По умолчанию из Бейсика на C++

Есть программа, написанная на Microsoft Quick Basic v.4.50, которая пингует сайт и при не получении ответа от сайта в течении 120 секунд производит перезагрузку.
есть 2 причины моей просьбы:
1. при запуске данной программы запускается также непонятный процесс под названием "ntvdm.exe", который вешает комп на 98% быстродействия (QB 4.5 не способен компилировать под современные ОС);
вот снимок экрана:

2. EXE-файл нижеприведённой программы не способен запуститься через команду Start и запускать его можно только из BAT-файла простым вызовом типа: "c:\cc.exe" - тут не получиться задать минимальный приоритет работы программы;

Код:
ON ERROR GOTO er
ex% = 0
WHILE ex% < 12
      SHELL "ping /n 1 google.com|Find /I " + CHR$(34) + "TTL=" + CHR$(34) + ">qqqq"
      OPEN "qqqq" FOR INPUT AS #1
      IF NOT EOF(1) THEN LINE INPUT #1, a$ ELSE a$ = ""
      CLOSE #1
      l% = LEN(a$)
      IF l% = 0 THEN ex% = ex% + 1 ELSE ex% = 0
      SLEEP 10
      GOTO jump
  er:
      CLOSE #1
  jump:
WEND
SHELL "shutdown -t 0 -r -f"
END

коммент к строке 4:
это Batch-команда (т.е. команда, вызываемая из BAT-файла, которая сохраняет значение пинга в файл qqqq без расширения):
Код:
ping /n 1 google.com|Find /I "TTL=">qqqq

а так - вроде как обычный Бейсик.....

огромная просьба:
перепишите мне пожалуйста данный код программы на язык C и скомпилируйте EXE-файл

есть вариант использования Batch-команд:
Код:
echo off
SetLocal EnableExtensions
if "%~1"=="" (start "" /normal "%~fs0" ~& exit)
:begin
ping -n 6 127.1 >NUL
ping -n 1 google.com|Find /I "TTL=" && (set n=0 & goto begin) || set /a n+=1
if "%n%"=="12" shutdown -t 0 -r -f
goto begin

но и этот вариант у меня "не прошёл"
- претензий к коду Batch у меня нет
просто в процессе продолжительной работе вылазит сообщение об ошибке, касающееся Ping.exe
- я точно не знаю в чем причина этого сообщения, но одно могу сказать точно:
пока я не нажму "Ок" в данном окне сообщения, - то Batch-программа работать не будет
(т.е. в любом случае нужно убрать окно сообщения об ошибке, - в противном случае код Batch-файла приостанавливает свою работу)
Ответить с цитированием