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.txtintoREADME.mdand moved the changelog toCHANGELOG.md.
3.1.0.0 - 2024-04-30
- Added
SilentCancelNSIS function to cancel async search (cancel by callback may not help - the callback is called too rarely and for found items only). - Added
CleanupAsyncThreadfunction to cleanup the state of async search thread before stating new search. - Added
IsAsyncDonefunction to help determine the current async search thread state. - Implemented termination of
rundll32.exespawned 64-bit child-process if the search is canceled.
- Fixed
Wow64DisableWow64FsRedirectionwas not reverted to initial value on exit. - Re-wrote
GetSystemHandleInformation()- nowNtQuerySystemInformationuseSystemExtendedHandleInformation(instead of obsolete SystemHandleInformation). Large number of handles led to overflow fields ofSYSTEM_HANDLEstructure (USHORTHandleValue and others). - Fixed erroneous
ResetEvent(g_hFinishNow)inSystemFuncInit- would be called several times during one search: (GetSystemHandlesCountandEnumSystemHandles) or (GetSystemModulesCountandEnumSystemProcesses). Now callingResetEvent(g_hFinishNow)moved toSystemEnum- the main entry point of any enum, called only once. - Now
EnumSystemHandlesdoes not handle handles of processes that could not be opened usingOpenProcessinGetProcessFileName(System, System Idle, and other privileged ones).
g_hThreadFileshandle 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.dllto ANSI. - Fixed endless loop in
GetSystemHandleInformation()on some Windows versions.
- ANSI build did not convert Unicode characters from
LockedList64.dllto ANSI.
FindProcessdid not always push "no" (/yesno) or an empty string onto the stack when no processes were running.
- Added
CloseProcessfunction. - Improved application window caption lookup to find "main" windows (no owner).
- Added 64-bit modules counting via
LockedList64for 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
Backbutton triggering auto-next during scan when/autonextis 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
LockedListpage.
- Added missing calls to
EnableDebugPriv()inFindProcessandEnumProcesses.
- 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
Cancelbutton click.
- Added
/ignorebtn [button_id]switch to specify a newIgnorebutton. This button can be added to the UI using Resource Hacker (recommended) or at run time using the System plug-in.
- Fixed
EnumSystemProcesseson Windows 2000. - Fixed
Systembeing listed on Windows 2000.
/autonextnow also applies when all open programs have been closed while the dialog is visible.
- Fixed
AddCustomnot adding items. - No longer returns processes with no file path.
- Added
/autonextto automatically go to the next page when no items are found.
- Fixed
IsFileLocked()returningtruefor missing directories (thanks ukreator).
- Replaced
afxres.hinclude with<Windows.h>inLockedList.rc.
- Now using
ExtractIconExinstead ofExtractIconfor all icons (thanks jiake).
- Fixed programs not being closable.
- RC2: Removed debug message box.
- Added
EnumProcessesplug-in function. - Added
FindProcessplug-in function. - Now gets 64-bit processes (but not modules).
- RC2: Added version information resource.
- RC3: Added
/yesnoswitch toFindProcessplug-in function.
- RC4: Fixed
FindProcessplug-in function case sensitivity (now case insensitive).
- Process file description now retreived by
SystemEnumif no process caption found. SilentSearchnow uses a callback function instead of the stack.SilentSearch/threadchanged 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
AddFolderplug-in function.
- Fixed processes getting repeated in the list.
- Fixed list not auto scrolling to absolute bottom.
Nextbutton text restored when using/ignoreand 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
IsFileLockedplug-in function. - Fixed
/noprogramsplug-in switch.
- Removed DLL manifest to fix Microsoft
VC90 CRTdependency. - Now using ANSI
pluginapi.libfor non Unicode build. - Switched from
my_atoi()to pluginapimyatoi().
- Increased
FILE_INFORMATION.ProcessCaptionto 1024 characters to fix buffer overflow crash. - Fixed
IsFileLocked()failing if first plug-in call (EXDLL_INIT()) is missing.
- Added
ignoredialog result if/ignorewas used and there were programs running. - Added additional argument for
/autocloseand/autoclosesilentto setNextbutton text. - Added
IsFileLockedNSIS function.
- Fixed possible memory leaks if plug-in arguments were passed multiple times.
/ignoreno longer used to specifyNextbutton text for/autocloseand/autoclosesilent.
- Added
AddCustomplug-in function.
- Reverted back to using
my_atoi()(Unicode NSISmyatoi()has a bug). - Fixed possible memory access violation in
AddItem(). - Improved
Copy Listcontext menu item code. - Fixed
Copy Listnot showing correct process ID's. - Fixed memory leak from not freeing allocated memory for list view item paramaters.
- RC2: Fixed
AddCustomnot working (non debug builds).
- Fixed CRT dependency.
- Improved percent complete calculations.
- Now pushes
/nextto stack in between stack items. - Fixed memory leak in
AddItem(). - Fixed crashes caused by using
AddFileplug-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 ProcessandSystem). - 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) (andSystemEnumv0.5). - RC4: Fixed garbage process appearing (
SystemEnumv0.6). - RC4: Fixed Unicode build not returning correct processes (
SystemEnumv0.6).
- Implemented new NSIS plugin API (
/NOUNLOADno longer necessary).
- Increased array sizes for processes and process modules from 128 to 256.
- Added
AddClassandAddCaptionfunctions.
- Re-wrote
/autoclosecode and fixed crashing. - Fixed
Copy Listmemory 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/ignoreswitch can be used along with this to set theNextbutton text. - Added
/colheadings"application_text" "process_text"
- Fixed memory leak causing crash when re-visiting dialog. Caused by duplicate call to
GlobalFreeon the same pointer.
- Added
/ignoreswitch that prevents theNextbutton being disabled. - Added
AddApplicationsto add all running applications to the list. - Added processing mouse cursor.
- Added right-click context menu with
CloseandCopy Listoptions. - Added progress bar.
- Added default program icon for processes without an icon.
- Added code to resize controls for different dialog sizes.
- Fixed typo in
AddModulefunction (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_LABELTIPstyle to list view control for long item texts. - Added
WM_SYSMENUexistence 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-6towidth-GetSystemMetrics(SM_CXHSCROLL).
- Added two new examples.
- Fixed pointer error in
FileListstruct 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.