Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Высокий приоритет заданному процессу

Ответить
Настройки темы
Любой язык - Высокий приоритет заданному процессу

Аватара для 7human7

Старожил


Сообщения: 483
Благодарности: 1


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: 7human7
Дата: 19-03-2010
Можно-ли добавить сам процесс в исключения, и теперь, при любом запуске этого процесса он будет запускаться с высоким приоритетом.. но как?

Отправлено: 08:13, 15-03-2010

 

Аватара для 7human7

Старожил


Сообщения: 483
Благодарности: 1

Профиль | Отправить PM | Цитировать


Установил Prio.
Вроде то, что мне нужно. Т.е. как бы я не запускал этот процесс, он все время будет в высоком приоритете.

И всё-таки, средствами windows это никак нельзя решить? Сохранить приоритет на определенный процесс.

Отправлено: 15:32, 16-03-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


7human7, «средствами Windows», как это сформулировано Вами — нет. Можно сделать скрипт, либо изначально запускающий требуемый процесс с повышенным приоритетом, либо следящий за созданием процессов и повышающий приоритет процесса, совпадающего по исполняемому пути с искомым.

Например, для Блокнота сие может выглядеть так:
* запуск процесса с повышенным приоритетом:

читать дальше »
Код: Выделить весь код
Option Explicit

Const HIGH_PRIORITY_CLASS = &H00000080

Dim strPath2FileName

Dim objSWbemServicesEx
Dim objSWbemObjectEx_Win32_ProcessStartup
Dim intProcessID


strPath2FileName = "c:\windows\system32\notepad.exe"

Set objSWbemServicesEx = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set objSWbemObjectEx_Win32_ProcessStartup = objSWbemServicesEx.Get("Win32_ProcessStartup").SpawnInstance_

objSWbemObjectEx_Win32_ProcessStartup.PriorityClass = HIGH_PRIORITY_CLASS

If objSWbemServicesEx.Get("Win32_Process").Create( _
	Replace(strPath2FileName, "\", "\\"), Null, objSWbemObjectEx_Win32_ProcessStartup, intProcessID) <> 0 Then
	
	WScript.Echo "Can't create process [" & strPath2FileName & "]"
End If

Set objSWbemObjectEx_Win32_ProcessStartup = Nothing
Set objSWbemServicesEx                    = Nothing

WScript.Quit 0

* слежение за созданием процессов и повышение приоритета заданного процесса:
читать дальше »
Код: Выделить весь код
Option Explicit

Const HIGH_PRIORITY_CLASS = &H00000080

Dim strPath2FileName

Dim objSWbemServicesEx
Dim collSWbemObjectSet
Dim objSWbemObjectEx
Dim intProcessID


strPath2FileName = "c:\windows\system32\notepad.exe"

Set objSWbemServicesEx = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")


Set collSWbemObjectSet = objSWbemServicesEx.ExecNotificationQuery( _
	"SELECT * FROM __InstanceCreationEvent WITHIN 1 " & _
	"WHERE TargetInstance ISA 'Win32_Process' " & _
	"AND TargetInstance.ExecutablePath = '" & Replace(strPath2FileName, "\", "\\") & "'")

Do
	Set objSWbemObjectEx = collSWbemObjectSet.NextEvent
	
	If objSWbemObjectEx.TargetInstance.SetPriority(HIGH_PRIORITY_CLASS) <> 0 Then
		WScript.Echo "Can't set priority of process [" & strPath2FileName & "]"
	End If
Loop

Set objSWbemObjectEx   = Nothing
Set collSWbemObjectSet = Nothing
Set objSWbemServicesEx = Nothing

WScript.Quit 0

Насколько я понимаю, установив Prio - Priority Saver Вы уже решили свою проблему?
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:55, 16-03-2010 | #3


Аватара для 7human7

Старожил


Сообщения: 483
Благодарности: 1

Профиль | Отправить PM | Цитировать


Нет, не решил. После запуска Windows'а по новой приоритет возвращается "по умолчанию", и приходится заново ставить "высокий приоритет".

Iska, каким из этих мне воспользоваться? Я почему говорю определенный процесс, потому что если взять одну игру:


Запускается с LaunchGTAIV.exe, при этом если нажать на GTAIV.exe - ничего не происходит.
После нажатия на LaunchGTAIV.exe в процессах сначала появляется процесс LaunchGTAIV.exe, а потом уже GTAIV.exe:

на который и нужно задать "высокий приоритет".

Последний раз редактировалось 7human7, 19-03-2010 в 21:25.


Отправлено: 20:12, 19-03-2010 | #4


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


7human7, тогда попробуйте поиграться со вторым скриптом из поста #3, указав в строке:
Код: Выделить весь код
strPath2FileName = "c:\windows\system32\notepad.exe"
вместо пути к Блокноту полный путь к «GTAIV.exe».

Отправлено: 21:57, 19-03-2010 | #5


Аватара для 7human7

Старожил


Сообщения: 483
Благодарности: 1

Профиль | Отправить PM | Цитировать


Потом сохранить как .bat?
И потом с него мне запускать игру? Но как я сказал, с GTAIV.exe игра не запускается, она запускается только с LaunchGTAIV.exe в папке с игрой.

Отправлено: 06:52, 20-03-2010 | #6


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата:
Потом сохранить как .bat?
Сохранить этот изменённый указанным выше образом скрипт в файле с произвольным именем и расширением «.vbs» в любой папке. Запускать скрипт вручную перед запуском игры.

P.S. Проверьте, будет ли выставляться для процесса «GTAIV.exe» повышенный приоритет и отпишитесь сюда. При положительном ответе я поменяю логику скрипта.

Отправлено: 15:04, 20-03-2010 | #7


Аватара для 7human7

Старожил


Сообщения: 483
Благодарности: 1

Профиль | Отправить PM | Цитировать


Да, выставляется.
Жалко Prio не сохраняет приоритеты и после перезапуска windows, а так через него было бы проще.

Отправлено: 18:23, 20-03-2010 | #8


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


7human7, попробуйте новый вариант:
читать дальше »
Код: Выделить весь код
Option Explicit

Const HIGH_PRIORITY_CLASS = &H00000080

Dim objSWbemServicesEx
Dim objSWbemSink

Dim strPath2StartFileName
Dim strPath2WorkingDirectory
Dim strPath2SearchFileName

Dim intProcessID
Dim boolDone


strPath2StartFileName    = "c:\Program Files\Far\Far.exe"    ' Путь к LaunchGTAIV.exe, берём с ярлыка свойство «Объект»
strPath2WorkingDirectory = "c:\Temp"                         ' Рабочий каталог, берём с ярлыка свойство «Рабочая папка»
strPath2SearchFileName   = "c:\windows\system32\notepad.exe" ' Путь к GTAIV.exe

Set objSWbemServicesEx = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set objSWbemSink       = WScript.CreateObject("WbemScripting.SWbemSink","Sink_")

objSWbemServicesEx.ExecNotificationQueryAsync objSWbemSink, _
	"SELECT * FROM __InstanceCreationEvent WITHIN 1 " & _
	"WHERE TargetInstance ISA 'Win32_Process' " & _
	"AND TargetInstance.ExecutablePath = '" & Replace(strPath2SearchFileName, "\", "\\") & "'"

If objSWbemServicesEx.Get("Win32_Process").Create( _
	Replace(strPath2StartFileName, "\", "\\"), strPath2WorkingDirectory, Nothing, intProcessID) <> 0 Then
	
	WScript.Echo "Can't create process [" & strPath2StartFileName & "]"
Else
	boolDone = False
	
	Do
		Wscript.Sleep 100
	Loop Until boolDone
End If

objSWbemSink.Cancel

Set objSWbemSink       = Nothing
Set objSWbemServicesEx = Nothing

WScript.Quit 0
'=============================================================================

'=============================================================================
Sub Sink_OnObjectReady(objSWbemObjectEx, objSWbemAsyncContext)
	If objSWbemObjectEx.TargetInstance.SetPriority(HIGH_PRIORITY_CLASS) <> 0 Then
		WScript.Echo "Can't set priority of process [" & strPath2SearchFileName & "]"
	End If
	
	boolDone = True
End Sub
'=============================================================================

Значения переменных «strPath2StartFileName», «strPath2WorkingDirectory», «strPath2SearchFileName» правите под себя, как указано в комментариях, сохраняете скрипт с расширением «.vbs» и запускаете.

Отправлено: 00:04, 22-03-2010 | #9


Ветеран


Сообщения: 3487
Благодарности: 507

Профиль | Сайт | Отправить PM | Цитировать


Цитата 7human7:
Жалко Prio не сохраняет приоритеты и после перезапуска windows, а так через него было бы проще. »
http://www.prnwatch.com/rus/prio.html

Тут утверждается обратное. Приоритет сохраняется.
Галочку ставить не забываем?

-------
Просьба обращаться на "ты".


Отправлено: 00:13, 22-03-2010 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Высокий приоритет заданному процессу

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интернет - Tcpip\Parameters\PersistentRoute Rock Microsoft Windows 2000/XP 5 09-12-2011 02:27
Очень высокий пейджинг (pages/sec) Seven Microsoft Windows NT/2000/2003 4 29-01-2010 12:57
Скорость подключения (высокий пинг) K.A.V. Хочу все знать 9 17-09-2009 05:25
Pop-up window parameters oIo_DeN_oIo Вебмастеру 2 14-08-2005 20:56
Странно высокий индекс цитирования Vlad Drakula Вебмастеру 3 26-12-2004 19:03




 
Переход