· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Перезапустить саму себя

. 1 . 2 . >>

Посл.отвђт Сообщенiе


Дата: Июн 3, 2003 17:00:02

Пишу прогу и она должна сама себя перезапустить после отработки N раз. N - задаю в камандной строке. Пробовал зацыклить на N раз вызов функции
.WHILE (count!=0)
invoke WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULT
dec count
... но пошли какието непонятки :( Вопрос а вообще как можно решить эту задачу?
Если можно пример кода :)


Дата: Июн 3, 2003 17:15:49 · Поправил: Edmond

Аноним
Чесное слово я не понимаю слово "Перезапустить" и в контексте

.WHILE (count!=0)
invoke WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULT
dec count

Не хочу даже думать, что происходит при повторном вызове WinMain!

Перезапуск программы это тоже самое, что и запуск например CreateProcess().

Вопрос а вообще как можно решить эту задачу?
Если можно пример кода :)


Вопрос не ясен :(
Какую задачу именно следует решить?


Дата: Июн 3, 2003 17:19:28

То есть для чего программа должна перезапускаться?


Дата: Июн 3, 2003 17:24:16

Программа чистит свободное место на винте. Создается много файлов до тех пор пока дискового пространства почти на остается. Хочу чтобы чистка проходила в несколько проходов, поэтому как только потерлись файлы заполнения от N-го запуска хочу перезапустить всю прогу на N+1-е затирание диска ...


Дата: Июн 3, 2003 17:36:05

Аноним
Не могу понять, а для чего перезапускать ВСЮ программу, почему просто неповторить процесс чистки?


Дата: Июн 3, 2003 17:41:12

... ну писал я писал программу для одноразовой чистки а потом пообщался с умными людьми а они говорят что чистить надо как минимум 7 раз. Ну думаю а может просто перезапустить ее 7 раз . Попробовал не вышло . Ну и спросил как написать программу которая вызывает свою основную процедуру N раз :)


Дата: Июн 3, 2003 17:45:20

Я вот не понимаю зачем создавать много файлов? Чем это отличается от создания одного большого файла? Если ты хочешь при этом затереть старые элементы каталогов, соответствующие удаленным файлам, то у тебя ничего не выйдет, так как пока место есть винда скорее всего будет увеличивать размер каталога, а когда место закончится, то файл создать просто не получится, а старые элементы так и останутся.


Дата: Июн 3, 2003 17:52:12

... Ну как затереть имена каталогов я еще не думал. Вероятно Вы правы. Я пока "перезапуститься" не знаю как ... :)


Дата: Июн 3, 2003 17:53:03

Аноним
Уууууужааассс..
Если вы её сами написали.
А, ну так хорошо, давайте сделаем вам
.WHILE (count!=0)
invoke WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAU
Это можно.
Но для начала, ВЫ ДОЛЖНЫ быть уверены, что переменные в вашей программе находятся в нужных состояниях.
Уверен, это не так!!!

В конце концов я бы мог посоветовать такой выход.
Допишите в конец кода CreateProcess и передайте в параметрах процесса число оставшихся запусков.
По моему это оригинальное решение :)))


Дата: Июн 3, 2003 18:03:35

... попрошу Edmond-а не удивляться моим "гениальным" решениям :) я еще и не такое могу :))) Уточню теперь: если имя моей проги например 123.exe я в конце просто вызываю CreateProcess () с именем 123.exe ? то есть с именем самой себя ? ... <:}


Дата: Июн 3, 2003 18:11:40

Аноним
попрошу Edmond-а не удивляться моим "гениальным" решениям :)
Да, я вообщем понял причину такового :)


Уточню теперь: если имя моей проги например 123.exe я в конце просто вызываю CreateProcess () с именем 123.exe ? то есть с именем самой себя ? ... <:}

Угу.


Дата: Июн 3, 2003 18:16:58

Спасибо !!!!!!! Радуюсь щенячей РАДОСТЬЮ :)))


Дата: Июн 3, 2003 18:26:05

Аноним
А и не забудте в командной строке (то есть прямо в строке с именем программы указать оставшееся число запусков)


Дата: Июн 3, 2003 18:31:21

... ну а ка-а-а-ак же !!!! теперь если в ком строке число запусков ==0 то вообще не работаем . Нифиговинькая рекурсия получается УУУРРРААА!!!!


Дата: Июн 3, 2003 18:55:26

Все тело WinMain надо запихнуть в другую процедуру - CUТ/PASТЕ, а в WinMain теперь сделать LOOP и внутри вызвать новую процедуру столько раз сколько надо.

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.951