I get messages "Going to compile test program and then run it"
then "The file '$TEMP\nsz1325.tmp\Lock' is now locked. It will appear on the LockedList dialog page soon..." some dialog blinks and that's all.

Found the problem. It was a bad array pointer. It wasn't the fact of the file not being there it was simply only taking the first file or module added with AddFile/AddModule.

I was also able to fix the captions problem. I noticed captions were being repeated over multiple processes aside from the garbage caption for the first few processes. Just needed a ZeroMemory in there.

Realised that EnumWindows does not enumerate child windows anyway (that's what EnumChildWindows is for) so instead I'm checking to see if a window has the WS_SYSMENU style set (title bar). Now get the correct caption for Internet Explorer among others.

This isn't possible because the list box is actually a list view with a single hidden column set to the width of the box. The NSIS InstFiles page has the same thing. Another option would be to have a tool-tip like the InstFiles page...

You can use ListView_SetColumnWidth with LVSCW_AUTOSIZE, but I think the triple dot looks better. If someone wants to see the entire line, he could just hover over it instead of scrolling and then seeing just the end.

During testing of various locked items, I found a minor quirk. The locking process was detected going away for the exe's, but when I exited explore (brought up inside the target install directory), that was not detected going away. I had to navigate back and then next again to repeat the locked file search to get past it to the install. Also during testing, I ran into an "out of memory" message that appeared in the dialog just before the process name. That only happened once and did not repeat itself during futher testing.

It appears that the plugin doesn't try both short and long paths so both need to be added for files / modules that may be in use with either a long or short path. Might be a nice addition for the plugin to check both behind the scenes.

Better still would be the ability to match files / modules in use by file name and then compare the paths to verify they are the same. This would also cover the unlikely scenario where the path is a combination of both long and short. Also, files / modules names can be short.

Besides that all I can say is wow... this is an extremely useful plugin.

I shall see if I can reproduce this on my XP machine soon. I do not have Vista unfortunately. This is interesting though as they are both exactly the same code bases for both functions except one directs output to the stack and one to a list view control!

Our tester has been experiancing an intermitant crash in the LockedList.dll plug-in. The crash happens during initialization (dialog is showing 0% on progress) The image captures is too large to attach. Here is the script used:

;
; This function is called to display any locked files.
;
Function LockedListShow

v0.4 - 27th September 2007
* 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.
* Fixed typo in AddModule function (ModulesCount>FilesCount). Thanks kalverson.
* List view is now scrolled into view while items are added.
* List changed to multiple columns.
* Debug privileges were not being set under SilentSearch.
* Added /ignore switch that prevents the Next button being disabled.
* Added AddApplications to add all running applications to the list.
* Added processing mouse cursor.
* Added right-click context menu with Close and Copy List options.
* Added progress bar.
* Added default program icon for processes without an icon.
* Added code to resize controls for different dialog sizes.

I cannot reproduce that crash kalverson and by the looks of it it's out of my control, unless the module handle being passed is not valid. I could surround it by a try{} block but I am not keen on that idea.

I have a question about the LockedList plugin. Does AddFile support searching an entire directory? I couldn't find where it specifically said it was supported in the readme. I wanted to know that this is an option, before I go and try to fix my installer problems using this plugin.

Hopefully it does, because this plugin looks awesome and is basically the perfect solution for what I'm trying to do.

Yes, I want it to search my entire application directory to make sure nothing is being used before I go and try to update files. I didn't see anywhere that said wildcards were supported, but if then are, then that is fantastic. Thank you!