All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
- Reorganized readme and changelog - merged
Readme.txt
intoREADME.md
and moved the changelog toCHANGELOG.md
.
3.1.0.0 - 2024-04-30
- Added
SilentCancel
NSIS function to cancel async search (cancel by callback may not help - the callback is called too rarely and for found items only). - Added
CleanupAsyncThread
function to cleanup the state of async search thread before stating new search. - Added
IsAsyncDone
function to help determine the current async search thread state. - Implemented termination of
rundll32.exe
spawned 64-bit child-process if the search is canceled.
- Fixed
Wow64DisableWow64FsRedirection
was not reverted to initial value on exit. - Re-wrote
GetSystemHandleInformation()
- nowNtQuerySystemInformation
useSystemExtendedHandleInformation
(instead of obsolete SystemHandleInformation). Large number of handles led to overflow fields ofSYSTEM_HANDLE
structure (USHORT
HandleValue and others). - Fixed erroneous
ResetEvent(g_hFinishNow)
inSystemFuncInit
- would be called several times during one search: (GetSystemHandlesCount
andEnumSystemHandles
) or (GetSystemModulesCount
andEnumSystemProcesses
). Now callingResetEvent(g_hFinishNow)
moved toSystemEnum
- the main entry point of any enum, called only once. - Now
EnumSystemHandles
does not handle handles of processes that could not be opened usingOpenProcess
inGetProcessFileName
(System, System Idle, and other privileged ones).
g_hThreadFiles
handle now not closed after any async search to hold last search result (done, cancel or wait).- Increased array sizes for lists (files, modules, classes, captions, custom items and folders) from 128 to 256.
- Removed unused
g_hThreadAutoClose
. - Handle types are now cached to improve performance.
3.0.0.5 - 2024-02-26
- ANSI build did not include null-termination when converting Unicode characters from
LockedList64.dll
to ANSI. - Fixed endless loop in
GetSystemHandleInformation()
on some Windows versions.
- ANSI build did not convert Unicode characters from
LockedList64.dll
to ANSI.
FindProcess
did not always push "no" (/yesno
) or an empty string onto the stack when no processes were running.
- Added
CloseProcess
function. - Improved application window caption lookup to find "main" windows (no owner).
- Added 64-bit modules counting via
LockedList64
for the progress bar and silent search.
- 64-bit module support via
LockedList64.dll
(special thanks to Ilya Kotelnikov).
- Fixed
GetSystemHandleInformation()
failing due to change in the number of handles betweenNtQuerySystemInformation()
calls (special thanks to voidcast).
- Fixed a crash in
SystemEnum
(v1.6) for the Unicode build.
- Fixed
Back
button triggering auto-next during scan when/autonext
is used.
- Kills processes with no windows when using autoclose with
SilentSearch
.
- Added autoclose code to
SilentSearch
.
- Fixed some bugs in
SystemEnum
(v1.5).
- Fixed
StartsWith()
matching incorrectly for some strings.
- Fixed window message loop halting page leave until mouse move on Windows 2000.
- Fixed clipboard list copy for the Unicode build.
- Fixed crashes and infinite looping after repeatedly going back to the
LockedList
page.
- Added missing calls to
EnableDebugPriv()
inFindProcess
andEnumProcesses
.
- Fixed crash on Windows XP 32-bit and below.
- Improved support for Windows x64 - now retrieves 64-bit processes but still cannot enumerate 64-bit modules (this is not possible from a 32-bit process).
- Fixed infinite loop which sometimes occurred on
Cancel
button click.
- Added
/ignorebtn [button_id]
switch to specify a newIgnore
button. This button can be added to the UI using Resource Hacker (recommended) or at run time using the System plug-in.
- Fixed
EnumSystemProcesses
on Windows 2000. - Fixed
System
being listed on Windows 2000.
/autonext
now also applies when all open programs have been closed while the dialog is visible.
- Fixed
AddCustom
not adding items. - No longer returns processes with no file path.
- Added
/autonext
to automatically go to the next page when no items are found.
- Fixed
IsFileLocked()
returningtrue
for missing directories (thanks ukreator).
- Replaced
afxres.h
include with<Windows.h>
inLockedList.rc
.
- Now using
ExtractIconEx
instead ofExtractIcon
for all icons (thanks jiake).
- Fixed programs not being closable.
- RC2: Removed debug message box.
- Added
EnumProcesses
plug-in function. - Added
FindProcess
plug-in function. - Now gets 64-bit processes (but not modules).
- RC2: Added version information resource.
- RC3: Added
/yesno
switch toFindProcess
plug-in function.
- RC4: Fixed
FindProcess
plug-in function case sensitivity (now case insensitive).
- Process file description now retreived by
SystemEnum
if no process caption found. SilentSearch
now uses a callback function instead of the stack.SilentSearch
/thread
changed to/async
.- Previously added processes now stored in an array for look up to prevent repetitions rather than looked up in the list view control.
- Added
AddFolder
plug-in function.
- Fixed processes getting repeated in the list.
- Fixed list not auto scrolling to absolute bottom.
Next
button text restored when using/ignore
and no processes are found.
- File description displayed for processes without a window caption.
- Process ID displayed for processes without a window caption or file description.
- Fixed
IsFileLocked
plug-in function. - Fixed
/noprograms
plug-in switch.
- Removed DLL manifest to fix Microsoft
VC90 CRT
dependency. - Now using ANSI
pluginapi.lib
for non Unicode build. - Switched from
my_atoi()
to pluginapimyatoi()
.
- Increased
FILE_INFORMATION.ProcessCaption
to 1024 characters to fix buffer overflow crash. - Fixed
IsFileLocked()
failing if first plug-in call (EXDLL_INIT()
) is missing.
- Added
ignore
dialog result if/ignore
was used and there were programs running. - Added additional argument for
/autoclose
and/autoclosesilent
to setNext
button text. - Added
IsFileLocked
NSIS function.
- Fixed possible memory leaks if plug-in arguments were passed multiple times.
/ignore
no longer used to specifyNext
button text for/autoclose
and/autoclosesilent
.
- Added
AddCustom
plug-in function.
- Reverted back to using
my_atoi()
(Unicode NSISmyatoi()
has a bug). - Fixed possible memory access violation in
AddItem()
. - Improved
Copy List
context menu item code. - Fixed
Copy List
not showing correct process ID's. - Fixed memory leak from not freeing allocated memory for list view item paramaters.
- RC2: Fixed
AddCustom
not working (non debug builds).
- Fixed CRT dependency.
- Improved percent complete calculations.
- Now pushes
/next
to stack in between stack items. - Fixed memory leak in
AddItem()
. - Fixed crashes caused by using
AddFile
plug-in function. - RC3: Fixed 6 possible memory access violations.
- RC3: Removed debug
MessageBox
. - RC3: Unicode plug-in build name changed to
LockedList.dll
. - RC4: Removed unused includes.
- RC5: Fixed memory access violation when using
SilentSearch
.
- RC2: Excluded process ID's #0 and #4 from searches (
System Idle Process
andSystem
). - General code cleanup.
- Added
/menuitems
"close_text" "copy_list_text". - Implemented Unicode build.
- Fixed memory access violation in
g_pszParams
. - Various fixes and changes in
SystemEnum
(seeSystemEnum.cpp
). - Now includes current process in search when using
SilentSearch
. - RC2: Fixed crash if no search criteria was provided (division by zero).
- RC3: Fixed Unicode build crash (
my_zeromemory
) (andSystemEnum
v0.5). - RC4: Fixed garbage process appearing (
SystemEnum
v0.6). - RC4: Fixed Unicode build not returning correct processes (
SystemEnum
v0.6).
- Implemented new NSIS plugin API (
/NOUNLOAD
no longer necessary).
- Increased array sizes for processes and process modules from 128 to 256.
- Added
AddClass
andAddCaption
functions.
- Re-wrote
/autoclose
code and fixed crashing. - Fixed
Copy List
memory read access error. - Made thread exiting faster for page leave.
- Progress bar and
%
work better. - Processing mouse cursor redrawn.
- Ignore button text only set when list is not empty.
- RC2: Fixed /autoclose arguments.
- Added
/autoclose
"close_text" "kill_text" "failed_text" and/autoclosesilent
"failed_text". The/ignore
switch can be used along with this to set theNext
button text. - Added
/colheadings
"application_text" "process_text"
- Fixed memory leak causing crash when re-visiting dialog. Caused by duplicate call to
GlobalFree
on the same pointer.
- Added
/ignore
switch that prevents theNext
button being disabled. - Added
AddApplications
to add all running applications to the list. - Added processing mouse cursor.
- Added right-click context menu with
Close
andCopy List
options. - Added progress bar.
- Added default program icon for processes without an icon.
- Added code to resize controls for different dialog sizes.
- Fixed typo in
AddModule
function (ModulesCount>FilesCount
). Thanks kalverson. - Debug privileges were not being set under
SilentSearch
.
- Module or file names can now be just the file name as opposed to the full path.
- Folder paths are converted to full paths (some are short DOS paths) before comparison.
- List view is now scrolled into view while items are added.
- List changed to multiple columns.
- Added
LVS_EX_LABELTIP
style to list view control for long item texts. - Added
WM_SYSMENU
existence check when obtaining window captions. - Added reference to Unload function to read-me.
- Files/modules lists memory is now freed when using SilentSearch.
- Files and Modules lists count now reset after a search.
- Width of list header changed from
width-6
towidth-GetSystemMetrics(SM_CXHSCROLL)
.
- Added two new examples.
- Fixed pointer error in
FileList
struct causing only first module/file added to be used. - Fixed caption repetition over multiple processes.
- Fixed stack overflow in
DlgProc
. Special thanks, Roman Prysiazhniuk for locating the source.
- Better percent complete indication.