Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > C/C++ > C/C++
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #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-файла приостанавливает свою работу)
Ответить с цитированием
  #2  
Старый 18.06.2015, 00:17
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,051
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

ntvdm - виртуальная машина для выполнения dos скриптов.
Я думаю, что тут не надо переписывать на C/C++ или любой другой язык. Посмотри здесь: http://stackoverflow.com/questions/3...n-a-batch-file
Есть несколько идей, которые могут сработать.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:04.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter