Simone 2a961ee075 build: align build script and CI to canonical plugin pattern
- Rewrite build_plugin.py following nsParser reference pattern:
  correct vcxproj/dist/plugins paths, --configs plural + --config alias,
  --final flag, platform_toolset param, parallel builds with spinner,
  correct clean_build_artifacts targeting src/Build/
- CI build.yml: replace --config + --verbose with --configs + --verbosity minimal
- CI release.yml: replace --config with --configs
2026-04-30 00:23:35 +02:00
2026-04-29 15:17:33 +02:00

nsProcess NSIS Plugin v1.6

Personal modified version


Original Description

2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru)

Source function FIND_PROC_BY_NAME based upon the Ravi Kochhar (kochhar@physiology.wisc.edu) code. Thanks iceman_k (FindProcDLL plugin) and DITMan (KillProcDLL plugin) for direct me. NSIS UNICODE compatible version (1.6) by brainsucker.

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)
  • The process name is case-insensitive
  • Win95/98/ME/NT/2000/XP/Win7 support
  • Small plugin size (4 Kb)
  • NSIS UNICODE support

Usage

Find process

${nsProcess::FindProcess} "[file.exe]" $var

Parameters:

  • [file.exe] - Process name (e.g. "notepad.exe")

Return values ($var):

Code Description
0 Success
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

Kill/Close process

${nsProcess::KillProcess} "[file.exe]" $var
${nsProcess::CloseProcess} "[file.exe]" $var

Parameters:

  • [file.exe] - Process name (e.g. "notepad.exe")

Return values ($var):

Code Description
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

Direct plugin call (without macros)

nsProcess::_CloseProcess "notepad.exe"
Pop $R0

Unload plugin

${nsProcess::Unload}

Example

!include "nsProcess.nsh"

Section "Check Notepad"
    ${nsProcess::FindProcess} "notepad.exe" $R0
    ${If} $R0 == 0
        MessageBox MB_YESNO "Notepad is running. Close it?" IDNO skip
        ${nsProcess::CloseProcess} "notepad.exe" $R0
        ${If} $R0 == 0
            MessageBox MB_OK "Notepad closed successfully"
        ${Else}
            MessageBox MB_OK "Failed to close Notepad"
        ${EndIf}
        skip:
    ${Else}
        MessageBox MB_OK "Notepad is not running"
    ${EndIf}
    ${nsProcess::Unload}
SectionEnd

Include file

Include nsProcess.nsh to use the macros:

!include "nsProcess.nsh"

⚠️ Differences in the Personal Version

New supported architecture: x64 (amd64-unicode)

The original supported only:

  • x86-ansi (Plugins\nsProcess.dll)
  • x86-unicode (nsProcessW.dll renamed to nsProcess.dll)

The personal version adds support for:

  • amd64-unicode (x64)

Visual Studio Project

The original included:

  • Source/nsProcess.sln - VS2008 Solution
  • Source/nsProcess.vcproj - VS2008 Project (x86 only)

The personal version upgrades to VS2022 with x64 support:

  • nsProcess.sln - VS2022 Solution
  • nsProcess/nsProcess.vcxproj - VS2022 Project (x86-ansi, x86-unicode, amd64-unicode)

Added Files

  • build_plugin.py - Python script to compile the plugin for all architectures
  • nsis/ - Folder with NSIS headers for compilation:
    • api.h, crt.c, nsis_tchar.h, pluginapi.c, pluginapi.h

Removed Files

Pre-compiled DLL files have been removed from the distribution:

  • Plugins/nsProcess.dll (x86 ANSI)
  • nsProcessW.dll (x86 UNICODE)

Build

cd nsProcess
python build_plugin.py

DLLs are copied to plugins/{platform}/nsProcess.dll.

Build Options

python build_plugin.py --config x86-unicode      # Single architecture (x86-ansi|x86-unicode|amd64-unicode|all)
python build_plugin.py --toolset 2026            # Specific toolset (2022|2026|auto)
python build_plugin.py --jobs 4                  # Number of parallel MSBuild jobs (default: CPU count)
python build_plugin.py --clean                   # Clean dist/ before build
python build_plugin.py --install-dir "C:\NSIS\Plugins"  # Copy to additional NSIS directory
python build_plugin.py --verbose                 # Extended MSBuild output
python build_plugin.py --version                 # Print version and exit

Functional Changes

No functional changes compared to the original. Modifications are limited to the build infrastructure and x64 support.


See README_IT.md for the Italian version.

S
Description
NSIS plugin for process management (find/kill/close)
Readme Zlib 107 KiB
v1.6.0 Latest
2026-04-29 12:00:07 +00:00
Languages
C 52.2%
Python 44.3%
NSIS 3.5%