|
|
#1
|
|||
|
|||
из Бейсика на 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
|
|||
|
|||
ntvdm - виртуальная машина для выполнения dos скриптов.
Я думаю, что тут не надо переписывать на C/C++ или любой другой язык. Посмотри здесь: http://stackoverflow.com/questions/3...n-a-batch-file Есть несколько идей, которые могут сработать. |