tavria2
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Код: --[[ Функция возвращает параметры командной строки, указанные пользователем при запуске приложения. В случае, если приложение создано, как SFX-архив (в режиме "Web/Email executable"), то будет произведена корректировка глобальной переменной "_SourceFolder", вместо пути к папке в которую распаковывается SFX-архив, будет подставлен реальный путь к вашему приложению.]]-- function CommandLineArgs() tArgs = _CommandLineArgs; -- параметры командной строки if (Table.Count(tArgs) > 0) then -- есть переданные параметры if (String.Find(tArgs[Table.Count(tArgs)], "SFXSOURCE:", 1, false) ~= -1) then -- приложение является SFX-архивом -- полный путь + имя файла SFX-архива (в таблице параметров всегда будет последним) local cPathSFX = String.Right(tArgs[Table.Count(tArgs)], String.Length(tArgs[Table.Count(tArgs)]) - 10); local tSplitPath = String.SplitPath(cPathSFX); -- разлаживаем путь на составляющие if (tSplitPath.Folder ~= "") then -- если в пути присутствует папка tSplitPath.Folder = String.Left(tSplitPath.Folder, String.Length(tSplitPath.Folder) -1); -- удаляем завершающий слэш "\" end _SourceFolder = tSplitPath.Drive..tSplitPath.Folder; -- назначаем глобальной переменной "_SourceFolder" - новый путь (к SFX-архиву) Table.Remove(tArgs, Table.Count(tArgs)); -- удаляем SFX-путь из таблицы пользовательских параметров end end if (Table.Count(tArgs) == 0) then tArgs = nil; end -- если нет пользовательских параметров return tArgs -- возвращаем пользовательские параметры, в виде таблицы end ------------------------------------------------------------------------------------------------------------ tUserArgs = CommandLineArgs(); -- корректируем путь в "_SourceFolder" и получаем параметры переданные приложению local cPathApp = _SourceFolder.."\\".._SourceFilename; -- путь + имя файла if (not tUserArgs) then -- если приложение запущено без параметров -- Код программы до перезагрузки -- ... cPathApp = "\""..cPathApp.."\"".." -reboot1"; -- путь + имя файла + параметр "-reboot1", указывающий на 1-ю перезагрузку -- запись в Автозагрузку, для одноразового запуска Registry.SetValue(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce", "RebootApp", cPathApp, REG_SZ); System.Reboot(); -- перезагрузка else -- если приложение запущено с параметрами if (tUserArgs[1] == "-reboot1") then -- Код программы после 1-й перезагрузки -- ... cPathApp = "\""..cPathApp.."\"".." -reboot2"; -- путь + имя файла + параметр "-reboot2", указывающий на 2-ю перезагрузку -- запись в Автозагрузку, для одноразового запуска Registry.SetValue(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce", "RebootApp", cPathApp, REG_SZ); System.Reboot(); -- перезагрузка elseif (tUserArgs[1] == "-reboot2") then -- Код программы после 2-й перезагрузки -- ... end end |
| Всего записей: 1127 | Зарегистр. 19-01-2005 | Отправлено: 12:54 30-01-2007 | Исправлено: tavria2, 15:26 30-01-2007 |
|