Set WSHObj = WScript.CreateObject("WScript.Shell") 'Указываем заголовки диалогов уведомления ExitOperaTitle = "Выйти из Opera?" ActiveDownloadsTitle = "Активные закачки" 'Получаем полный путь к Opera.exe OpPath = Replace(WScript.ScriptFullName, "\" & WScript.ScriptName, "") & "\Opera.exe" 'Получаем уникальный идентификатор процесса Opera.exe (который относится именно к указанному пути) OpProcPID = PathIsProcess(OpPath) 'Если процесс не запущен, завершаем работу скрипта If OpProcPID = 0 Then WScript.Quit 'Закрываем процесс Opera (не принудительно) WSHObj.Run "taskkill.exe /PID " & OpProcPID, 0, True 'Ждём 2 секунды для проверки, не закрылся ли наш процесс StartTime = Timer Do While OpProcPID > 0 WScript.Sleep 100 OpProcPID = PathIsProcess(OpPath) If Timer - StartTime >= 2 Then Exit Do Loop 'Если процесс всё ещё существует, то активируем диалог(и) уведомления, и посылаем нажатие ENTER (~) If OpProcPID > 0 Then WSHObj.AppActivate(ExitOperaTitle) WSHObj.AppActivate(ActiveDownloadsTitle) WSHObj.SendKeys("~") End If 'Функция для получения уникального идентификатора процесса для определённого запущенного файла (испол. WMI). Function PathIsProcess(Path) Set Processes = GetObject("winmgmts://localhost") Set myProcEnum = Processes.ExecQuery("select * from Win32_Process") For Each Proc In myProcEnum If StrComp(Proc.ExecutablePath, Path, 1) = 0 Then PathIsProcess = Proc.ProcessID Exit Function End If Next PathIsProcess = 0 End Function |