Версия 1.5:
— nsProcess.zip (25 KB)
Версия 1.6 (поддержка NSIS UNICODE от brainsucker, переименуйте библиотеку nsProcessW.dll
):
— nsProcess.zip (14 KB)
— Зеркало: nsProcess_1_6.7z
Обсуждение:
На форуме
Возможности:
— Поиск процесса по имени.
— Завершение всех процессов с указанным именем (все найденные экземпляры).
— Закрытие всех процессов с указанным именем. Сначала происходит попытка закрыть все окна процессов, ожидание 3 секунд для завершения процессов. Если процесс(ы) все еще активны, используйте функцию _CloseProcess
.
— Имя процесса нечувствительно к регистру
— Поддерживаемые ОС: Win95/98/ME/NT/2000/XP/Win7
— Поиск процессов других пользователей при запуске с правами администратора или при переключении на другого пользователя.
— Маленький размер плагина (4 Кб)
— Поддержка Unicode (просто переименуйте nsProcessW.dll
в nsProcess.dll
)
!include "LogicLib.nsh" Section "" StrCpy $1 "YOURAPP.exe" nsProcess::_FindProcess "$1" Pop $R0 ${If} $R0 = 0 nsProcess::_KillProcess "$1" Pop $R0 Sleep 500 ${EndIf} SectionEnd
Обычно _FindProcess
возвращает:
— 0
если процесс найден
— 603
если процесс(ы) не найдены
// Коды возврата: // 0 = успех // 601 = Нет разрешения на завершение процесса // 602 = Не все процессы завершились успешно // 603 = Процесс в данный момент не запущен // 604 = Невозможно определить тип ОС // 605 = ОС не поддерживается // 606 = Невозможно загрузить NTDLL.DLL // 607 = Не удалось получить адрес процедуры из NTDLL.DLL // 608 = ошибка NtQuerySystemInformation // 609 = Невозможно загрузить KERNEL32.DLL // 610 = Не удалось получить адрес процедуры из KERNEL32.DLL // 611 = Ошибка CreateToolhelp32Snapshot
Ravi Kochhar (исходная функция FIND_PROC_BY_NAME на основе его кода)
iceman_k (Find Process By Name) и DITMan (KillProcDLL Manual).
Перевел Leha Silent специально для tolik-punkoff.com