Как автоматически перезапускать программу, если ее случайно закрыли ?

14.9.2010 - 2037 просмотров ;)

Вот надо стало мне тетеньке все время держать программу открытой, а программа та закрывается легко – крестиком. Ну и тетя, рас — и закрывает ее, случайно конечно. Мы ее и ругали и предупреждали, и по рукам били.

И решили мы программу эту гвоздями прибить к десктопу, а как ?

Я неделю думал, спрашивал везде и вот пришли ко мне несколько вариантов, которые я вам и показываю первый паровоз на JScript (тема была открыта тут):

function FindExecutedAppByName(AppName){
	return objService.ExecQuery("select * from Win32_Process where ( " + 
							"    name = \"" + AppName + "\")")
} //FindExecutedApp1C
var objService = GetObject("winmgmts:\\\\.\\Root\\CIMV2");
var WshShell = new ActiveXObject("Wscript.Shell")
WScript.Echo("Скрипт запущен");
while (0 == 0) {
	App = FindExecutedAppByName("notepad.exe");
	if (App.Count == 0) {
		WScript.Echo("Не напущен");
		WshShell.Run("notepad.exe", 1, true);
	}
	WScript.Echo("Работает");
	WScript.Sleep(30000);
}

Согласитесь, черт бы ногу побрал. Есть куда более простой вариант на AutoHotKey, который мне понравился больше всего:

Loop {

   Process,WaitClose,notepad.exe

   Run, notepad.exe

}

Но можно обойтись и вообще простым примером, минусом которого является то что висит дурацкий cmd оболочка, но все сводится к простому исходнику:

:ass

start /WAIT notepad.exe

goto ass

Статьи из раздела, Видеочат рулетка