|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Ограничение времени работы избранного процесса |
|
VBS/WSH/JS - [решено] Ограничение времени работы избранного процесса
|
Новый участник Сообщения: 9 |
Нашел тут скрипт который проверяет время работы процесса и если оно превысило заданный - убивает.
Скрытый текст
Set WshShell = CreateObject("Wscript.Shell") Dim InfoTime, StartTime, EndGame, Game Game = "notepad.exe" InfoTime = InputBox("Введите количество игровых минут", "Game's killer", "60") ' час времени на игру Set oWmi = GetObject("WinMgmts:{impersonationLevel=impersonate}!//./root/cimv2") WScript.Sleep 60000 ' Время, чтобы успеть включить игру (1 минута) StartTime = Now WshShell.RegWrite "HKCU\Test\StartTime", StartTime, "REG_SZ" WshShell.RegWrite "HKCU\Test\InfoTime", InfoTime, "REG_SZ" EndGame = False ' Завершена игра или еще нет. False - не завершена While (True) Call IsTheEndOfGame() If EndGame<>True Then ' Все еще играем? InfoTime = CLng(WshShell.RegRead("HKCU\Test\InfoTime")) If ( InfoTime < 0) Then Call KillGame() Else InfoTime = InfoTime + DateDiff("n",now,WshShell.RegRead("HKCU\Test\StartTime")) WshShell.RegWrite "HKCU\Test\InfoTime", InfoTime, "REG_SZ" End If Else ' Вдруг выход из игры, а время еще есть Call WaitGame() End If WScript.Sleep 15000 ' пауза на 15 секунд Wend Sub IsTheEndOfGame() EndGame = True For Each Process In oWmi.ExecQuery("SELECT * FROM Win32_Process") If Process.Name=Game Then s = Process.Name EndGame = False End If Next End Sub Sub KillGame() For Each Process In oWmi.ExecQuery("SELECT * FROM Win32_Process") If Process.Name=Game Then ' Выдаем окошко с предупреждением, что время истекло. ' (Чтобы можно было сохранить достижения в игре. Иначе обидно будет) Window = WshShell.Popup("Через минуту игра закончится, сохранись!",10,"Game's killer",16) WScript.Sleep 50000 Process.Terminate ' Завершаем работу игрушки End If Next End Sub Sub WaitGame() For Each Process In oWmi.ExecQuery("SELECT * FROM Win32_Process") If Process.Name<>Game Then EndGame = False End If Next End Sub Ни как не могу переделать под свои нужды. А нужно всё тоже самое, только без всяких записей в реестр и т.п. Т.е. если время работы процесса > N sec. then kill Т.е. скрипт работает, запускаем programm.exe, если время работы процесса больше N сек. - закрываем его, если потом снова запустить programm.exe то скрипт его снова закрывает если превышено время |
|
Отправлено: 18:33, 23-08-2015 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата mapisic:
Ну, например, вот так: Скрытый текст
Option Explicit Dim strProcessName Dim intDuration Dim intPolling Dim strComputer Dim objSWbemObjectEx Dim objSWbemDateTime strProcessName = "Notepad.exe" intDuration = 15 intPolling = 5 strComputer = "." With WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(strComputer, "root\cimv2") Set objSWbemDateTime = WScript.CreateObject("WbemScripting.SWbemDateTime") Do For Each objSWbemObjectEx In .ExecQuery("SELECT * FROM Win32_Process WHERE Name = '" & strProcessName & "'") objSWbemDateTime.Value = objSWbemObjectEx.CreationDate If DateAdd("s", intDuration, objSWbemDateTime.GetVarDate()) < Now() Then objSWbemObjectEx.Terminate End If Next WScript.Sleep intPolling * 1000 Loop Set objSWbemDateTime = Nothing End With WScript.Quit 0 «strProcessName» — имя процесса, «intDuration» — ограничение на продолжительность работы указанного процесса (в секундах), «intPolling» — период опроса процессов (в секундах). |
|
Отправлено: 19:41, 23-08-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать Благодарствую. То что нужно.
UPD. если два процесса с одинаковым именем, то таймер для каждого свой? |
Последний раз редактировалось mapisic, 23-08-2015 в 20:18. Отправлено: 20:07, 23-08-2015 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата mapisic:
|
|
Отправлено: 21:17, 23-08-2015 | #4 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] подсчёт времени запущенного процесса redebook.exe | vlad_exe@vk | Скриптовые языки администрирования Windows | 13 | 15-05-2012 23:02 | |
Доступ - [решено] Прекращение работы хост процесса (Прекращение работы хост процесса (Rundll32)) | decoy! | Microsoft Windows Vista | 2 | 24-04-2010 19:51 | |
Ограничение времени работы | avolkov2009 | Microsoft Windows NT/2000/2003 | 4 | 24-12-2009 14:50 | |
Ограничение времени работы за компом | CyraxZ | Microsoft Windows 2000/XP | 4 | 08-01-2007 15:36 | |
C++ Builder->Определение времени, необходимого для завершения процесса | XCodeR | Программирование и базы данных | 6 | 18-01-2005 14:40 |
|