NsProcess plugin
From NSIS Wiki
Jump to navigationJump to search
Author: Instructor (talk, contrib) |
Links
Download v1.5:
- nsProcess.zip (25 KB)
Download v1.6 (NSIS UNICODE support, by brainsucker, rename nsProcessW.dll):
- nsProcess.zip (14 KB)
- Mirror: nsProcess_1_6.7z
Discussion:
Forum thread
Description
Features:
- Find a process by name
- Kill all processes with specified name (not only one)
- Close all processes with specified name (first tries to close all process windows, waits for 3 seconds for process to exit, terminates if still alive, use _CloseProcess function)
- The process name is case-insensitive
- Win95/98/ME/NT/2000/XP/Win7 support
- Finds processes of other user(s) when running 'as Administrator' or when having switched to another user
- Small plugin size (4 Kb)
- NSIS UNICODE support (just rename nsProcessW.dll into nsProcess.dll)
Example Usage
!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
Commonly _FindProcess returns:
- 0 if found
- 603 if no process matched
// Return codes are as follows: // 0 = Success // 601 = No permission to terminate process // 602 = Not all processes terminated successfully // 603 = Process was not currently running // 604 = Unable to identify system type // 605 = Unsupported OS // 606 = Unable to load NTDLL.DLL // 607 = Unable to get procedure address from NTDLL.DLL // 608 = NtQuerySystemInformation failed // 609 = Unable to load KERNEL32.DLL // 610 = Unable to get procedure address from KERNEL32.DLL // 611 = CreateToolhelp32Snapshot failed
Thanks
Ravi Kochhar (source function FIND_PROC_BY_NAME based upon his code)
iceman_k (Find Process By Name) and DITMan (KillProcDLL Manual) for direct me