WinBatch, WebBatch, and WinBatch+Compiler 2026A are now available for download.
Users with a current license may download the latest version of the software from the download page.
https://www.winbatch.com/download.html - use the "Click here to download WinBatch+Compiler" link.
If you do not have a current license and are interested in this and future releases, please visit our software purchase page. You can easily order online at
https://commerce.winbatch.com
WB 2026A 2026 Jan 23, 2026
DLL 6.26aza First appearing in WB 2026A
!!! IMPORTANT !!!
Changed the WinBatch product licensing algorithm to address the limitations of the previous
version. As a result, the new license numbers for all products will no longer be valid for
executable product versions released before January 2026.
Modified ForEach processing of variant variable safearrays to skip foreach loop processing
when the safearray of type ARRAY|ERROR or when the array does not contain any elements.
Previously, using an empty safearray in a ForEach generated a WinBatch error.
Improved the CredMan function's ability to clear password strings from memory when using the
"Domain" or "Generic" commands. Also addressed a potential memory corruption problem when
clearing password strings.
Add new p1 option 4 to IntControl 93. Option p1 option 4 returns the friendly name associated
with a certificate in the system store. The p2 parameter must specify the thumbprint of a
certificate in the system store.
Improved appearance of FileMemu DLL's main menu "File Attributes" dialogs on high DPI
monitors.
Modified conversion of variant R4s and R8s to WIL integers to allow conversions to WIL 64-bit
integers when the floating point value is outside the range of WIL 32-bit integers.
Address an issue with Unicode-delimited lists that could cause list related functions to fail
to detect the end of the list.
New functions:
StrClear( string_var )
Wipes the string memory associated with a WIL variable. Always returns 1.
string_var: a WIL variable containing a multibyte, unicode, or BSTR string.
SharedMemClose(mem-name)
Closes a shared memory instance. Returns @True(1) on success: otherwise @Falsae (0).
mem-name: Name of shared memory instance as passed to SharedMemOpen.
SharedMemOpen(mem-name, global)
Creates or opens a shared memory instance. Returns @True(1) on success: otherwise
@Falsae (0).
mem-name: Name of a new or existing shared memory instance.
global: @True(1) allow access by all users in the system. @Falsae (0) only
the current user has access.
SharedMemRead(mem-name, timeout)
Reads data from a shared memory instance. Retrurns memory contents, "*NODATA*", or
"*TIMEOUT*".
mem-name: Name of a new or existing shared memory instance.
timeout: Read timeout period or -1 to never timeout.
SharedMemWrite(mem-name, data, timeout)
Writes data to a shared memory instance. Returns @True(1) on success: otherwise
@False (0) when the timeout period expires without writing data.
mem-name: Name of a new or existing shared memory instance.
data: String, number, or binary buffer contents to place in shared memory.
timeout: Read timeout period or -1 to never timeout.
New IntControl:
IntControl(103, p1, 0, 0, 0)
Use to clear sensitive sting data from process memory.
Returns the previous setting.
p1 Set to 1 (@True) to clear string memory. Set to 0 (@False) to turn off clearing. Off is
the default.
Dialogs and Dialog Editor:
Modified the editor to have edit and mulitedit controls reflect text alignment style changes
in the displayed text after a user changes the control's alignment style attribute.
Add the @csEditAll(-2147483648) style to the REPORTVIEW control. This style, when set, enables
editing of every column of every row to be editable. The style overrides the @csEditItem style
if set.
Modified the 'DialogControlState' function to support new REPORTVIEW style @csEditAll.
Add the "Add DPI variable to new templates" option to the Dialog Editor's
Edit->Options...->Save menu dialog. Selecting this option causes the editor to always
add the "<dlg-variable>DPI = <dpi,x-units,y-units>" to dialog templates. The DPI variable
can still be removed from an individual dialog template by unchecking "Add DPI variable for
automatic adjustment" on the "Position and Size" dialog attributes tab.
Added support for Graphics Interchange Format (GIF), Joint Photographic
Experts Group (JPEG), Exchangeable Image File (Exif), Portable Network Graphics (PNG), and
Tag Image File Format (TIFF), Windows Metafile Format (WMF), Enhanced Metafile (EMF, EMF+)
images to PICTURE and PICTURE BUTTON controls, as well as dialog backgrounds. Previously,
dialog controls and backgrounds, and only supported Bitmap (BMP) files.
Increased the maximum REPORTVIEW control item text length for each item to 4049 characters.
Nice.
Jim
I get the following page/message when trying to download.
WebBatch
Version 2024B
Thank you for using WebBatch!
Click here to purchase a standard license.
You are still downloading 2026A. It is simpler to use the WinBatch download page.
Sorry. I meant all I can get to is that WebBatch error page after entering my info and clicking Continue. I never get to the dowload page.
Jim
Are you referring to the WebBatch eval download? I have no problems downloading WebBatch, WinBatch, or WinBatch+Compiler, so I am a bit confused. Maybe provide the link you are using.
I am at this link/page and I enter my information and click Continue. I just received new license info today, if that matters.:
https://techsupt.winbatch.com/webcgi/webbatch.exe?compilers/compupd01.web
WinBatch Compiler Downloads
This section is designed for current WinBatch+Compiler customers on an active license. Current customers may download a current version of the WinBatch+Compiler package, or choose from a select list of previous versions if they are required.
To update your copy of the compiler you must enter your full name, email address, and license numbers below. You must use an active license purchased from Island Lake Consulting LLC. Information on your current plan status, if applicable, will appear on the next screen.
I then get that webbatch page when things aren't quite right at some level. I have seen this quite often myself when I am trying to setup webbatch. The link doesn't appear to change.
https://techsupt.winbatch.com/webcgi/compiler.exe?compilers/compupd01.web
WebBatch
Version 2024B
Thank you for using WebBatch!
Click here to purchase a standard license.
ID number:
Control number:
WebBatch technical support:
http://techsupt.winbatch.com
support@winbatch.com
Copyright ©1995-2024 Island Lake Consulting LLC
All rights reserved.
It is a long story, but the problem is related to our new licensing algorithm, as mentioned in the release notes. It was a bit confusing because quite a few users have already downloaded the latest version, but the WebBatch version number on the error message was the clue that lit the dim bulb.
It should work now.
Tony, can you explain what the <dlg-variable>DPI thing is useful for? It sounds cool, but I'm not sure I "get it".
Also, does the @csEditAll flag change the way the @cdRviText event works? Presently, it is defined as:
@deRviText (21)
Item Text: User has changed the text of a first column item in a REPORTVIEW control. The user modified text of the item is passed to the callback UDF/UDS in the callback's fifth parameter. Note that if more than one first column item of a control contains the same value, it is possible for the fifth parameter to contain a tab delimited list of multiple occurrences of the targeted item's text. The number items in the list indicates which instance of the item is the target of the event.
((I guess what I'm asking is, what's the best way to process the events of the user changing data in the reportview with @csEditAll turned on?))
Thanks.
Quote from: td on January 27, 2026, 02:52:07 PMIt is a long story, but the problem is related to our new licensing algorithm, as mentioned in the release notes. It was a bit confusing because quite a few users have already downloaded the latest version, but the WebBatch version number on the error message was the clue that lit the dim bulb.
It should work now.
Quote from: kdmoyers on January 28, 2026, 04:29:47 AMTony, can you explain what the <dlg-variable>DPI thing is useful for? It sounds cool, but I'm not sure I "get it".
It enables WIL dialogs created on high DPI monitors (3840 x 2160 or higher) to look the same on standard DPI monitors or the reverse. High dpi monitors have become increasingly common. I have been using them for about 8 years. MSFT had haphazard support in Windows for many years, but they supported it in earnest with the release of the first Windows 10 systems. The implementation of high DPI support in WinBatch was a major undertaking and involved many WIL functions and WinBatch-built-in dialogs. All dialogs released that are a part of a WinBatch release have supported high DPI since the release of 2019A in January of 2019. Well, we did miss a few things in the original release of support that were corrected in subsequent releases before anyone noticed.
There is a description in the release notes for the 2019A release and in the Consolidated WIL Help file.
https://docs.winbatch.com/mergedProjects/WindowsInterfaceLanguage/html/Defining_the_Dialog.htm
Quote from: kdmoyers on January 28, 2026, 04:42:47 AMAlso, does the @csEditAll flag change the way the @cdRviText event works? Presently, it is defined as:
@deRviText (21)
Item Text: User has changed the text of a first column item in a REPORTVIEW control. The user modified text of the item is passed to the callback UDF/UDS in the callback's fifth parameter. Note that if more than one first column item of a control contains the same value, it is possible for the fifth parameter to contain a tab delimited list of multiple occurrences of the targeted item's text. The number items in the list indicates which instance of the item is the target of the event.
((I guess what I'm asking is, what's the best way to process the events of the user changing data in the reportview with @csEditAll turned on?))
The @deRviText event fires for edit events for all columns.
Quote from: JTaylor on January 28, 2026, 07:37:28 AMThanks.
Thanks for pointing out the blunder. When a release is rolled out, it takes a few days to spread the new release to all systems. Installing the new WebBatch license caused the problem because the download page uses a renamed version WebBatch.exe to appease some browser implementations. The renamed file got missed... It makes the case for writing a WinBatch script to automate the process.
Quote from: td on January 28, 2026, 09:21:44 AMThe @deRviText event fires for edit events for all columns.
Got it. And the way to detect which column was edited is by doing before/after comparison?
If so, I think I can handle that, since I will have just gotten the @deRvrSelect event, allowing me to store a copy to compare against.
It would be slick if the callback's fifth parameter contained both the row and column that was editted.
((This whole feature is going to be a BIG help, simplifying my CRUD programs. Thanks Tony!))
Yup, some thought is being given to making the @deRviText even more useful.
One thought might be to make a different event altogether that does basically the same thing as @deRviText, but returns a different value in the fifth parameter.
It might return absolute indexes, like 8th row 6th column, along with the new value itself, like
8 @tab 6 @tab blue suede shoes
The current thinking is to keep the current event, but add the row and column information when the control has the edit all style. Of course, the problem with such a solution is that the new text part of the delimited event string can contain anything, including the designated delimiter.
A way to deal with all this is still being worked on.
That sounds like a pretty good solution. Maybe it's ok that the value might have embedded delimiters if it's the last piece because you can do itemremove(1,itemremove(1,x,@tab),@tab)
That is a very clever suggestion but we have already decided on a slightly different solution.
Perhaps consider implementing F2 as one method for entering Edit mode?
Jim
Are there any plans to return DblClick event to ReportViews when using the Edit all with the solution mentioned above?
Jim
Quote from: td on January 30, 2026, 09:33:30 AMThat is a very clever suggestion but we have already decided on a slightly different solution.
Awesome, I'm excited!