NsProcess plugin: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
No edit summary
Line 3: Line 3:
== Links ==
== Links ==


Download v1.5:
Download v1.7:
*[[Image:Zip.gif]] <span class="plainlinks">[http://nsis.sourceforge.net/mediawiki/images/archive/1/18/20140806212030!NsProcess.zip nsProcess.zip]</span> (25 KB)
 
Download v1.6 (NSIS UNICODE support, by [[user:brainsucker|brainsucker]], rename nsProcessW.dll):<br/>
*<attach>nsProcess.zip</attach>  
*<attach>nsProcess.zip</attach>  
*Mirror: [http://forums.winamp.com/attachment.php?attachmentid=48936&d=1309248568 nsProcess_1_6.7z]


Discussion:<br>
Discussion:<br>
Line 16: Line 12:
'''Features:'''
'''Features:'''
*Find a process by name
*Find a process by name
*Kill all processes with specified name (not only one)
*Kill all processes with specified name
*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)
*Close all processes with specified name (first tries to close window and terminates if still alive)
*The process name is case-insensitive
*The process name is case-insensitive
*Win95/98/ME/NT/2000/XP/Win7 support
*Win95/98/ME/NT/2000/XP/7/10 support
*Support Ansi/Unicode/x64 installers
*Finds processes of other user(s) when running 'as Administrator' or when having switched to another user
*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 ==
== Example Usage ==
Line 66: Line 61:
Ravi Kochhar (source function FIND_PROC_BY_NAME based upon his [http://www.physiology.wisc.edu/ravi/Software/ code])<br>
Ravi Kochhar (source function FIND_PROC_BY_NAME based upon his [http://www.physiology.wisc.edu/ravi/Software/ code])<br>
iceman_k ([[Find Process By Name]]) and DITMan ([[KillProcDLL Manual]]) for direct me
iceman_k ([[Find Process By Name]]) and DITMan ([[KillProcDLL Manual]]) for direct me
Thanks brainsucker for CloseProcess code


[[Category:Plugins]]
[[Category:Plugins]]

Revision as of 20:35, 29 October 2026

Author: Instructor (talk, contrib)


Links

Download v1.7:

Discussion:
Forum thread

Description

Features:

  • Find a process by name
  • Kill all processes with specified name
  • Close all processes with specified name (first tries to close window and terminates if still alive)
  • The process name is case-insensitive
  • Win95/98/ME/NT/2000/XP/7/10 support
  • Support Ansi/Unicode/x64 installers
  • Finds processes of other user(s) when running 'as Administrator' or when having switched to another user

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 Thanks brainsucker for CloseProcess code