azamapendrus
![](http://forum.ru-board.com/board/avatars/reginald.gif)
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Подскажите как чуть исправить скрипт. Мне необходимо, запускать в свернутом виде по два exe-файла (с нажатием ENTER), после того как один ехе отработал и вырубился, подключается следующий, но чтобы всегда работали одновременно две ехе. После того, как последний ехе отработал и прозвучал сигнал выскакивало бы сообщение: Разорвать инет? , и если в течении 2 минут не нажать отмену разрывал бы инет (модемное соединение), а после такое же сообщение о выключении компа. On Error Resume Next Set WshShell = WScript.CreateObject("WScript.Shell") Set oFSO = CreateObject("Scripting.FileSystemObject") sPath = "C:\Exefiles" aFilesArr = Array(10, "1.exe", "2.exe", "3.exe", "4.exe", "5.exe", "6.exe", "7.exe", "8.exe", "9.exe", "10.exe") For i = 1 To aFilesArr(0) sFile = sPath & "\" & aFilesArr(i) If (i Mod 2) > 0 Then Set oExec1 = WshShell.Exec(sFile) While Not WshShell.AppActivate (oExec1.ProcessID) WScript.Sleep 1000 WEnd WshShell.SendKeys "~" Else WScript.Sleep 5000 'пауза Set oExec2 = WshShell.Exec(sFile) While Not WshShell.AppActivate (oExec2.ProcessID) WScript.Sleep 1000 WEnd WshShell.SendKeys "~" While oExec1.Status = 0 And oExec2.Status = 0 ' вот здесь после того как одна ехе отработала, а другая ещё работает, подрубаются две новых, и получается уже 3 одновременно работают, и так далее, в конце может получиться, что и 7-8 одновременно будут работать, что нежелательно. WScript.Sleep 3000 WEnd If i = aFilesArr(0) Then '=====Звуковой сигнал Set WMPlayer = CreateObject("WMPlayer.OCX") WMPlayer.settings.autoStart = False WMPlayer.settings.enableErrorDialogs = False WMPlayer.URL = "C:\WINDOWS\Media\Windows Vista Shutdown.wav" WMPlayer.controls.play() While WMPlayer.playState <> 1 WScript.Sleep 1000 Wend '======================================== sTmpDir = WshShell.ExpandEnvironmentStrings("%Temp%") sMsgBoxFile = sTmpDir & "\~MsgBox.vbs" sScriptData = "iAsk = MsgBox(""Выключить компьютер?"", 262144+36, ""Внимание!"")" sScriptData = sScriptData & vbCRLF & "WScript.StdOut.WriteLine iAsk" iReboot = ExecExternalScript(sMsgBoxFile, sScriptData, 60 * 1, 6) If iReboot = 6 Then ShutDown_Comp() WScript.Quit End If End If Next ' вот здесь бы сообщение о разрыве , а потом уже и выключение Function ShutDown_Comp() sComputer = "." Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate,(Shutdown)}\\" & sComputer & "\root\cimv2") Set colOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem") For Each objOperatingSystem in colOperatingSystems objOperatingSystem.Win32Shutdown(1) Next End Function Function ExecExternalScript(sScriptFile, sScriptContent, iTime, sDefaultRet) FileCreate sScriptFile, sScriptContent Set oExec = WshShell.Exec("Wscript.exe " & sScriptFile) sStdOutRead = "" iTimerInit = 0 If iTime Then iTimerInit = Timer Do While oExec.Status <> 1 WScript.Sleep 100 If iTime And (Timer - iTimerInit) > iTime Then oExec.Terminate sStdOutRead = sDefaultRet Exit Do End If Loop oFSO.DeleteFile sScriptFile If sStdOutRead = "" Then sStdOutRead = oExec.StdOut.Read(1) ExecExternalScript = sStdOutRead End Function Function FileCreate(sFile, sData) Set oTF = oFSO.CreateTextFile(sFile, True) oTF.Write(sData) oTF.Close End Function | Всего записей: 19 | Зарегистр. 24-08-2008 | Отправлено: 14:55 22-11-2008 | Исправлено: azamapendrus, 14:59 22-11-2008 |
|