WinBatch Changelog

What's new in WinBatch 2024A

Jan 24, 2024
  • Addressed extender interface defect that caused WIL variable creation to fail when the extender passed a Unicode variable name to the WIL DLL.
  • Fixed problem that sometimes causes extender-created WIL array variables to become corrupt when an extender function returns the array using an extender function's WIL pointer parameter.
  • Address an issue that caused the WinBatch Compiler's ExtractAttachedFile function under specific conditions to check the available space of a file system drive that is not the drive the file is being extracted to.
  • New Functions:
  • FileEncoding(s:filename)
  • Returns a number indicating the character set encoding of a file.
  • Possible return values and meaning:
  • 0 - unknown
  • 1 - ANSI
  • 2 - UTF-16 LE
  • 3 - UTF-16 BE
  • 4 - UTF-8
  • 5 - Extended ANSI
  • filename: Name of the file to examine.
  • RunApp(s:appname, params[, flags]) Starts a UWP or Windows Store App and returns the app's process ID on successful start.
  • Note: This function cannot be used to start non-UWP applications.
  • appname: either the registered name or AUMID of the application to start.
  • params: space delimited list of appname startup parameters.
  • flags: [optionall] 0 = (default) appname is the application name.
  • 1 = appname is the AUMID of the application.
  • WinBatch Studio:
  • Added an informational message to the project tree window that is displayed when the "Open File Explorer Here" menu item is selected but the current project does not have an associated folder path.
  • Modified the Find In Files... menu option to no longer display a warning when encountering files with lines longer than 16384 characters.
  • Fixed memory buffer overrun in the file contents search functionality.
  • Dialogs and Dialog Editor:
  • Modified DialogControlSet's @dcColWidth request to accept column widths as percentages of a REPORTVIEW controls total width. Indicate a percentage value by using a double percent sign(%%) immediately after each percentage number in the function's fourth parameter.
  • Modified the Dialog Editor to transfer control highlighting between the Dialog view and Script view when using the menu option or Ctrl+Space accelerator to switch views.
  • FileMenu
  • Changed the Notepad menu option in the "FileMenu for ALL filetypes.mnw" menu file to first attempt to start NotePad.exe using the WIL Run function before attempting to use the ShellExecute function. This is a workaround for undocumented Windows Shell behavior in File Explorer context menus.

New in WinBatch 2023C (May 13, 2023)

  • DLL 6.22cwc First appearing in WB 2023C
  • Addressed problem causing the FilePurge function to fail to identify the last record in a file as a duplicate under certain conditions.

New in WinBatch 2023B (May 11, 2023)

  • Updated interpreter DLL's internal compression libraries to the latest release.
  • WinBatch 64-bit only:
  • Increased maximun total working string memory from 350MB to 500MB.
  • New Functions:
  • StrTrimChar(s:string, s:trim-char[, n:flags])
  • Returns the string without leading and/or trailing unwanted characters.
  • string: Text string to trim.
  • trim-char: One or more characters to removed from the front and/or back of string.
  • to-zone: [optional] 1 - Remove characters from left-hand side of string.
  • 2 - Remove characters from right-hand side of string.
  • 3 - (default) remove chacters from both sides of string.
  • FilePurge(s:in-file, s:out-file[, n:ignore-case[, n:character-set]])
  • Creates a copy of the in-file with all duplicate records removed.
  • Returns the number of duplicate recored detected. (A file record is defined by a @crlf or a @lf terminator.)
  • in-file: Name of file to purge duplicates from.
  • out-file: Name of a new file with duplicates removed.
  • ignore-case: [optional] @True(1) to perform case-insensitive record matching or @False(0)
  • for case-sensitive record matching. @False is the default.
  • character-set: [optional] 1=ANSI (default), 2=Unicode (UTF-16 LE), 3 = UTF-16 BE, 4 = UTF-8.
  • This parameter is ignored when the in-file has a byte-order mark (BOM).
  • Note: Case-insensitive record matching can only be used with ANSI and Unicode(UTF-16 LE) files.
  • WinBatch Studio:
  • Added the display of variable contents in a popup window during debugging sessions. The contents are displayed by hovering the mouse cursor over the variable name in the script when debugging is the pause at a breakpoint or when stepping through the lines of the running script. Variables with array or binary buffer contents are not displayed in the
  • popup window. Instead the variable's row is scrolled into view in the variable watch window and the variable's row is also given the input focus in the variable watch windo. String variables with strings larger than 1024 characters are truncated. String variables without word breaks are truncated at one line with an elipsis appended to the end of that line.
  • Added new "Open File Explorer Here" menu item to the Project Window's context menu. This item cause a Windows File Explore window to open in the selected project's or file's folder.
  • Added ability insert breakpoints by clicking the left mouse button with the mouse cursor in the left gutter of a scripts document view window. The breakpoint gutter area can by by the darker background color. The gutter can be added or removed by checking the "Show break point gutter" near the bottom of the "File types" tab of the "Options" dialog for "WIL" files.

New in WinBatch 2023A (Jan 4, 2023)

  • DLL 6.22awa First appearing in WB 2023A
  • Move extender unloading to later in the WinBatch process shutdown sequence to ensure extender resources cleanup.
  • Restored WinBatch Studio Analyzer's ability to check the parameter count of extender
  • functions.
  • Addressed an issue that caused object reference dot (".") syntax to error when applied to a map element using map square-bracket syntax.
  • Fixed a one byte buffer overflow in WinBatch Studio's 64-bit debugger.
  • Added option 2 to the RegQueryDword function's "flags" parameter. Value 2 causes the function to return the value of a registry key or data item in signed decimal format. This option can be combined with one of the registry view options using the WIL bitwise OR (|) operator.
  • New functions:
  • SendKeyW(s:key-string, [f:delay]) Unicode version of the WIL SendKey function. key-string: Unicode, regular and/or special characters delay: [optional] number of seconds to delay between keys
  • SendKeysToW(s:parent-windowname, s:key-string, [f:delay]) Unicode version of the WIL SendKey function. parent-windowname: initial part, or an entire window name.
  • key-string: Unicode, regular and/or special characters delay: [optional] number of seconds to delay between keys
  • TimeZoneConvert(s:ymdhms, s:from-zone[, s:to-zone]) returns ymdhms time adjusted to a new time zone.
  • ymdhms: time to convert.
  • form-zone: ID of time zone of the time in the first parameter.
  • to-zone: [optional] ID of time zone of the returned time. Defaults to system's time zone.
  • TimeZoneList([n:option]):
  • Returns an item list or an array of the names of known time zones, or a sting containing the current local time zone.
  • option:[optional] 0 to return an item list. 1 to return an array. 2 to return the current local time zone. Defaults to 0.
  • New IntControl:
  • IntControl(102, p1, 0, 0, 0):
  • Use to switch the WIL FileInfoToArray, RegQueryKeyLastWriteTime, and FileTimeGetEx
  • functions to return file times in UTC instead of local time on NTFS disk volumes. Returns the previous setting.
  • p1 Set to 1 (@True) for UTC times. Set to 0 (@False) for local times. Local time is the
  • default.
  • WIL dialogs and WinBatch Dialog Editor:
  • Added new dialog event @deFocus (24) that calls a dialogs' UDP when any control that can receives the input focus does receive the focus. Note that this event does not fire when you call DiaologControlState with request-code @dcsSetFocus. This restriction is necessary to prevent infinite recursion within a dialog's UDP.
  • Fixed memory exception problem caused by initializing a REPORTVIEW control with a control variable that does not contain an array.

New in WinBatch 2022D (Aug 4, 2022)

  • DLL 6.22dvd First showing up in WB 2022D
  • Corrected issue with the DllCall function not properly handling parameters with the
  • "long_ptr" type designation. This problem only occurred in the 32-bit version of WinBatch.
  • Added new extender feature level-1012. This level coincides with the new WIL DLL capacity to convert extender-function-returned VARTYPE_VARIANT variables with the variant type of
  • VT_DISPATCH to the WIL internal representation of object variables. This feature improves extender performance and enables enumeration of extender-function-returned VARTYPE_VARIANT objects that support the enumeration interface.

New in WinBatch 2022C (May 11, 2022)

  • Fixed issue in the BinaryCheckSum function that caused incorrect MD5 hash generation when the function was used to hash large binary buffers.

New in WinBatch 2022B (Mar 28, 2022)

  • Vary large binary buffer usage restrictions:
  • Maximum buffer size varies because the size depends on the virtual memory avaliable to the process using the buffer
  • Since the Windows COM APIs do not support safearrays larger than 2GB, BinarAllocArray cannot produce binary buffers greater than 2GBs
  • BinaryRead does not support files larger than 2GBs, even when the supplied buffer is larger
  • BinaryReadEx can be used to read files larger than 2GBs However, the function can only read 2GBs at a time Larger files can be read into a buffer by adjusting the buffer and file offsets between multiple calls to the function
  • BinaryWrite does not support creating files larger than 2GBs even when the supplied buffer is larger
  • BinaryWriteEx can be used to write buffers larger than 2GBs However, the function can only write up to 2GBs at a time Larger buffers can be written to a file by adjusting the buffer and file offsets between multiple calls to the function
  • BinaryReplace uses a temporary buffer that may be the size of the passed in binary buffer This means the WinBatch process needs twice the buffer size in available virtual memory to use the function
  • BinaryCheckSum cannot be used on buffers greater than 4GBs
  • WinBatch Studio:
  • Modified WBS 64-bit debugger to handle binary buffers greater than 2 GB and limited the binary buffer variable editing window to prevent editing of buffers that are greater than about 1 MB in size
  • Added support for horizontal scrolling using a mouse with a tilting center mouse wheel The feature is only present when WinBatch Studio executes on Windows Vista/2008 or newer versions of Window
  • WIL dialogs and WinBatch Dialog Editor:
  • Added support for the @csCenter and @csRight styles to the EditBox and MultilineBox controls
  • Modified the DialogControlSet function to support the @dcItemText(31) reqest-code This request-code can be used to modify the text in any existing column of the ReportView control The function's set-info parameter must contain a space delimited list consisting of the row number, column number, and replacement text

New in WinBatch 2022A (Jan 12, 2022)

  • Added a logical sort style, @LogSort, to WIL Dialog's REPORTVIEW control. Can be used with either the @Asort or @Dsort styles. Defaults to @Asort when sort direction style is not indicated. A logical sort treats digits embedded in the text and stand-alone digits as numbers instead of as code points. Digit sorting applies to both integers and floating-point numbers.
  • Modified the TimeAdd and TimeSubtract functions to accept and process 64-bit integer seconds in the seconds position of the second YMDHMS time parameter. Since YMDHMS date/time is limited to four-digit years, the sum of two times cannot exceed Dec. 31, 9999. Addressed problem that prevented 64-bit integers variable content from appearing in the result string when used in substitution.
  • Fixed problem that caused the GetTickCount64 function to incorrectly report the tick counts.
  • Added level 12 to the WinVersion function. Option 12 causes the function to return the "feature version" of the current OS on Windows 10 and newer systems. The function returns an empty string on older versions of Windows.
  • New function:
  • AppProcId(s:program-name [, i:flags [,i:retryies]]) Returns a tab-delimited list of process-ids for running instances of the named program.
  • Program-name: Program name as displayed in the Windows task manager.
  • Flags: (optional) 0 for entry system (default) and 1 for current session process only.
  • Retries: Number of times the function tries to find the program. Default is 7 with a half-second delay between each try.
  • WinBatch Studio:
  • Modified the UDP toolbar to display each UDP's parameters in the drop-down list. Also replaced the "#Define..." statements with an "F:", "S:" or "C:" to represent the UDP type.

New in WinBatch 2021D (Oct 24, 2021)

  • DLL 6.21dud First showing up in WB 2021D
  • Add the JSON extender to the Consolidated WIL Help system, the WIL Syntax Analyzer, and WinBatch Studio menu and syntax colorizing systems.
  • Corrected 8-bit characters in WIL Map key names causing a memory exception when the key name is added to a WIL Map.
  • Address problem in the ObjectClrNew function that caused 64-bit integers class constructor parameters to be truncated to 32-bits.
  • WinBatch Studio:
  • Increased limit on the size of strings representation of values in map key/value pairs when they are displayed in the "Array View" window. This change also addresses a problem with corrupted display data caused by long string values.

New in WinBatch 2021C (Jun 4, 2021)

  • Changed multi-user licensing to function like single-user licensing so that license numbers only need to be entered on two occasions instead of four to license all applications and utilities in a distribution.
  • Address an issue in the WinBatch Navigator script that prevented the 32-bit version from removing 64-bit multi-user license information and the 64-bit version from removing 32-bit multi-user license information when the "Remove License Numbers" button is selected. This change only affects multi-user license installations.
  • Added a new 64-bit integers WIL variable type(8192). The interpreter creates a 64-bit integer WIL variable whenever an integer value greater or less than the maximum or minimum 32-bit signed integer is assigned to a WIL variable.
  • WIL operators that act on integers now support 64-bit integers. These include assignment, relational, arithmetic, and bitwise operators. However, binary arithmetic operations on two 32-bit integers will not produce 64-bit results even if the result overflows or underflows the maximum or minimum 32-bit integer values. To obtain a 64-bit result one of the operands must be a 64-bit integer. To produce a 64-bit result from 32-bit only operands and avoid overflows or underflows use the new Int64 function on at least one of the 32-bit integer operand.
  • Added the 64-bit integer option (2) to the WinResources function's format parameter. The option causes the function to return a 64-bit integer when the return value is too large or too small to be represented by a 32-bit integer without loss of information.
  • Added a 64-bit integer option (2) to the following functions' format parameter:
  • DirSize
  • DiskFree
  • DiskSize
  • FileSize
  • FileSizeEx
  • The option causes each function to return a 64-bit integer:
  • The following functions have been modified to support new 64-bit integer WIL variables and manifest constants as input:
  • IsFloat
  • IsNumber
  • IsInt
  • ObjectType
  • VarType
  • Avg
  • Min
  • Max
  • Dialog Editor:
  • Fixed a problem displaying the editor's help file topics.

New in WinBatch 2021B (Feb 25, 2021)

  • DLL 6.21bub First appearing in WB 2021B
  • Modified the MapKeyFind function to return the value of the function's third parameter instead of generating an error when the found key has an undefined value associated with it.
  • Addressed issue that sometimes caused extender functions to receive string parameters with both the both the ANSI and Unicode "inittype" types set.
  • Added feature level 1011 to the extender interface. The feature level 1011 exposes WIL maps functionality to WIL extenders. See the new WIL SDK for more information.

New in WinBatch 2021A (Feb 23, 2021)

  • New functions:
  • MapKeyFind(m:map, s:key[, i/s:not_found])
  • Returns the value associated with a WIL map key.
  • Map: a variable containing a WIL map.
  • Key:key of a WIL map key/value pair.
  • Not_found: (optional)alternate return value when the key is not found. Zero (0) is the default return value.
  • RegCreateKeyEx(i:handle, s:subkey-string, s/i:mode, i:options [,i:view-flag])
  • Can be used to create a registration database key link.
  • Returns handle to new key with indicted access "mode" and "option".
  • Handle: handle to a registration database key subkey-string: a registry path to the key to create mode: new key's access mode
  • Options: new key's life-time and/or creates a registry symbolic link key.
  • 0 - non volatile key
  • 1 - volatile key
  • 2 - sumbolic link key
  • View-flag: (optional) controls registry 32-bit or 64-bit registry view
  • RegDeleteLink(i:handle, s:subkey-string [,i:view-flag])
  • Used to delete a registration database link key. Returns 1 if the key is deleted.
  • Handle: @REGMACHINE, @REGCURRENT, @REGUSERS, or @REGCLASSES subkey-string: a registry path to the link to delete
  • View-flag: (optionsal) controls registry 32-bit or 64-bit registry view

New in WinBatch 2020B (Aug 5, 2020)

  • Addressed problem that caused the WIL debugger to display a memory error when creating a WIL Map in a debugging session.
  • Added support for the ULONG64 data type name in structure descriptor strings passed to the DllStructAlloc function. The ULONG64 data type represents an unsigned 64-bit integer. Like other 64-bit data types, ULONG64s must be represented by text strings when passed to the DllStructPoke function. Likewise, DllStructPeek returns ULONG64 structure members as text strings.
  • Fix WIL map assignment statement parsing issue by detecting an undefined WIL Map key when the key is from an undefined element of an array and the array variable is a pointer to the array. The WIl parser now generates an error message instead of changing the variable containing the WIL Map into a variable containing the value on the right-hand side of the assignment statement.
  • Addressed problem that caused variant variables of type VT_INT to not be recognized as integers in relational expressions. This error caused an unexpected "3057: Variable could not be converted to a valid number" error when a variant value with the variant type VT_INT appeared in a relational expression.
  • Fixed issue that caused the Dialog function to return without displaying the dialog or generating an error when the dialog template contained an invalid dialog background color descriptor.
  • Modified the WinBatch Navigator script to use the new ShellExecuteWait function instead of the RunWait function to prevent launch errors of Roboscripter and other executables on a few systems.
  • New functions:
  • MapKeysGet(m:map, n:return-type[, s:delimiter]):
  • Returns all the keys stored in a WIL map.
  • map: a variable containing a WIL map.
  • return-type: 1 = return an array, 2 = return a delimited list
  • delimiter: (optional) one character delimiter used when list is returned. Defaults to a tab character.
  • MapValuesGet(m:map, n:return-type[, s:delimiter]):
  • Returns all the values stored in a WIL map.
  • map: a variable containing a WIL map.
  • return-type: 1 = return an array, 2 = return a delimited list. Non-convertible values are
  • skipped in the returned delimited list.
  • delimiter: (optional) one character delimiter used when a list is returned. Defaults to a tab character.
  • ShellExecuteWait(s:program-name, s:params, s:directory, n:display mode, s:operation):
  • Returns @True when a new process is started and the script calling the function is paused while the new process is executing. This function is identical to the ShellExecute WIL function in all other respects. Note that it is possible for the function to successfully perform the task indicated by the parameters but not pause the script. This can happen when the indicated task does not start a new process. The function indicates that the script is not paused by returning immediately with a value of @False.
  • program-name: the name of the desired .EXE, .COM, .PIF, .BAT, .CMD file or a data file.
  • params: optional parameters as required by the application.
  • directory: current working directory (if applicable).
  • display mode: @NORMAL, @ICON, @ZOOMED, @HIDDEN, @NOACTIVATE, or 0 for the default mode.
  • operation: operation to perform on the specified file.
  • Added 3 new REPORTVIEW control request-codes to the DialogControlGet function:
  • @dcItemcColor (29) - (l) Returns a string containing two color descriptors for a REPORTVIEW control item's text and background color. Each color descriptor consists of 3 vertical bar(|) delimited numbers representing the color's red, green, and blue values. The 2 color descriptors are separated by a space character delimiter. The function's "request-value" parameter must contain a string consisting of the one-based row and column numbers of the control item whose colors are to be returned. The two numbers representing the row and column must be delimited by a comma(,).
  • @dcItemRow (30) - (i) Returns the one-based row number of column 1, the left-most column, of the REPORTVIEW item whose text matches the text placed in the function's "request-value" parameter. Note that if more than one first column item of a control contains the same value, the "request-value" parameter may need to contain a tab-delimited list of multiple occurrences of the targeted item's text.
  • @dcItemText (31) - (s/l) Returns the text of column 1, the left-most column, of the REPORTVIEW item whose row number matches the number placed in the function's "request-value" parameter. Note that if more than one first column item of a control contains the same value, the returned text may contain a tab-delimited list of multiple occurrences of the targeted item's text.
  • Added a new REPORTVIEW control request-code to the DialogControlSet function:
  • @dcItemcColor (29) - (l) Sets the text and background colors of a REPORVIEW control item.
  • The item and colors are indicated by placing a 4 item space character delimited list in the function's set-info parameter. The list's 4 items consist of the one-based row number, the one-based column number, a text color descriptor, and a background color descriptors. The color descriptors can consist of 3 vertical bar(|) delimited numbers or a single hexadecimal number preceded by the letter "h" representing the color's red, green, and blue values. Three-row values have special meaning:
  • -1 color the indicated column of each odd-numbered row.
  • -2 color the indicated column of each even-numbered row.
  • -3 color the indicated column of every row.
  • One column value has a special meaning:
  • -1 color all columns of the indicated row.
  • Enhanced WIL Dialog's REPORTVIEW control to load and display the contents of WIL maps. The control accepts a WIL map in its template variable and from the DialogControlSet function when using the @dcContents request-code.
  • Modified the dialog function and WIL Dialog Editor to accept a single hexadecimal RGB color value anywhere that a bar (|) delimited RGB color values are used. The single hex value must be preceded by the letter "H" or "h" to be recognized as a valid RGB value. Bar delimited decimal number RBG values are still fully supported.
  • WinBatch Studio and WinBatch Compiler Lexical Analyzer changes:
  • Enabled detection of user-defined-procedures redefinition.
  • Added parameter count checking to user-defined-procedure calls.
  • Object members for both COM and dotNet object names longer than 30 characters no longer generate syntax errors.
  • Address problem the cause the WinBatch Studio breakpoint command to be flag as an unexpected item.
  • WinBatch Console:
  • Corrected problem that prevented errors occurring inside user-defined-procedures from being displayed at the console command line.
  • Added new #DefineCommand ... #EndCommand preprocessor statements. Use these two statements to create a WinBatch Console only user-defined-command. User-defined-commands share scope rules with user-defined-subroutines but are only callable from WinBatch Console and are ignored by WinBatch. The other unique feature of UDCs is their syntax. UDCs are both defined and called without opening and closing parentheses. They also use white space instead of commas to separate parameters.

New in WinBatch 2019B (Aug 5, 2020)

  • DLL 6.19bsb Additions and changes included in WB 2019B
  • Fixed potential problem in the implementation of the 64-bit WinBatch version of IntControl 1006.
  • Addressed issue in the implementation of the DirMake function that prevented the function from reporting an error when it failed to create a directory under certain conditions.
  • Add level 11 to the WinVersion function. Level 11 returns the "releaseID" of the current version on Windows 10 systems. The "releaseID" is the four digit version number associated with Windows 10 semiannual feature updates. WinVersion returns an empty string when level 11 is used on other versions of Windows.
  • Modified the AskFileText, AskItemList, and AskTextBox windows to scale proportionately on high DPI displays when these function's window size is modified using IntControl 62.
  • Added the LONG_PTR entry point return type to the DllCall and DllCallCdecl functions. Use this type to indicate that an entry point returns a 64-bit integer when called from 64-bit WinBatch and a 32-bit integer when called from 32-bit WinBatch.
  • Modified Roboscripter's UI to scale proportionately on high DPI displays.
  • Fixed Syntax Analyzer's parsing of the dereference operator (*) when directly followed by a function or user-defined procedure that returns an array. The fix prevents incorrect error generation when array brackets appear on the end of the call statement for the purpose of accessing a single array element.
  • Added new execution mode the RtStatus() function. It returns 16 for WinBatch Console execution mode when called from a WinBatch Console.
  • WIL Dialog Editor:
  • Corrected a defect that prevented the resizing of a dialog on multi-monitor systems when the editor was displayed on a monitor to the left of a system's primary monitor.
  • WinBatch Console:
  • WinBatch Console is a set of new executables that enable the entry and execution of WIL scripting language statements at a console command prompt. WIL statements can be entered and executed singly or as a group by switching WinBatch Console to multiline mode.
  • Enable WinBatch Console's multiline mode by typing a WIL statement at the command prompt and typing a colon(:) character as the last character on the line after the WIL statement. Pressing the Enter key after entering the colon key causes the console to enter multiline entry mode. The console command prompt changes to an ellipsis(...) when the console is in multiline mode. Once in multiline mode continue entering commands followed by the return key until your script is complete. Do not add a colon to the end of your WIL statement lines after entering multiline mode. Execute the console script by pressing the return key on the empty line after the list statement typed. After the script is executed the console returns single line entry mode. You can also return to single line mode without executing the script by pressing the escape key once.
  • WinBatch Console supports a few special keys to edit, select, copy, paste, and execute text in the console window. The table below lists the keys with a brief description of their function.
  • Key Function:
  • escape - Leave multiline mode or terminate WinBatch Console
  • end - Move input point to the end of the input line
  • home - Move input point to the beginning of the input line
  • tab - Move input point to the next tab stop
  • left arrow - Move input point one character to the left
  • back space - Erase character preceding the current input point and moves all
  • following text back one cell
  • right arrow - Move input point one character to the right
  • up arrow - Scroll backward in the statement history buffer
  • down arrow - Scroll forward in the statement history buffer
  • delete - Replace character a the cursor with a space
  • enter - Executes a single WIL statement
  • Press twice when console is in mulitline mode to execute all statements
  • Starts a new line when no statement present on the current line
  • Starts a new line in multiline mode
  • Copies selected text to the system clipboard
  • ctrl+z - Terminates the WinBatch Console application
  • ctrl+c - Copies selected WinBatch Console window contents to the system clipboard
  • ctrl+v - Pastes system clipboard contents into the WinBatch Console window
  • ctrl+break - Terminates running WIL statements
  • shift+right arrow - Selects or unselects character and moves selection point to the right
  • shift+up arrow - Selects or unselects characters up one line and movers selection pointup one line
  • shift+left arrow - Selects or unselects character and moves selection point to the left
  • shift+down arrow - Selects or unselects characters down one line and movers selectionpoint down one line
  • New WinBatch Console function:
  • Cout s:expression:
  • Cout is a console only function that evaluates "expression" and displays the result as text in the console window's client area. "Expression" cannot be a full WIL statement. expression - Can be any valid WIL language expression that can be represented as text. Valid WIL expressions include variable names, string and numeric literals, WIL constants, functions with their parameters, and operators with their operands with the exception of the assignment operators.
  • Cout differs from other WIL function because it does not require opening and closing parentheses. if Cout is placed in a script that is executed outside of WinBatch Console, it has no effect and always returns 0.
  • Cin s:prompt:
  • Cin returns text typed by an interactive user before the user pressed the return key. Cin is a console only function that displays the "prompt" text on a new line in the console window. The function then pauses until an interactive user press the return key.
  • prompt - string used as a command line prompt. Can be any valid string literal or varaible containing a value that can be converted to text.
  • Cin differs from other WIL functions in that it does not require opening and closing parentheses. When Cin is used outside the context of a WinBatch Console, it has no effect and always returns 0.
  • WinBatch Studio:
  • Added new "WinBatch Console" menu item to the "Debug" dropdown menu along with an associated toolbar button. This menu item and button start an instance of the 32-bit WinBatch Console application.

New in WinBatch 2020A (Aug 5, 2020)

  • Switched to DigiCert Authenticode code signing certificate to code-sign executables installed by the WinBatch Setup program.
  • Fixed problem in the MapKeyExist function that caused the function to sometimes return false(0) even though the passed in key existed in the passed in WIL map.
  • Add support for two new request numbers to the BinaryCheckSum function representing the SHA1and SHA256 hash algorithms. Both requests are available on Windows Vista/2008 and newersystems.
  • The new request numbers are:
  • 3 - SHA1 Function returns a 40 hex character string representation of SHA1 hash of the passed in binary buffer. (Requires Vista/2008 or newer.)
  • 4 - SHA256 Function returns a 64 hex character string representation of SHA256 hash of the passed in binary buffer. (Requires Vista/2008 or newer.)
  • Added support for the SHA256 algorithm to the FileDigest function. The request is available on Windows Vista/2008 and newer systems. Create a SHA256 hash by specifying "SHA256" in the function's algorithm parameter. "SHA256" - Returns 64 hex character string with optional formatting that represents the SHA256 hash of the passed in file. (Requires Vista/2008 or newer.)
  • Added optional "preserve-data" option to the BinaryClipPut function. Use this option to prevent the function from clearing all clipboard data formats on the system clipboard before adding the contents of the supplied binary buffer to the clipboard. The contents of format type indicated by the function's second parameter is replaced with the new contents in the binary buffer so any existing data for that format is still not preserved. preserve-data - (optional) 1 (@True) to preserve clipboard data or 0 (@False) to clean clipboard before writing binary buffer to the clipboard. Defaults to 0 when the parameter is not present.
  • New IntControl:
  • IntControl(100, p1, 0, 0, 0)
  • Sets the minimum hash table size for WIL maps. It returns the previous minimum hash sizesetting.
  • p1 - Number indicating minimum hash tables size.
  • Added an optional second parameter to WinIdGet function. Placing the name of a child window in the parameter will cause the function to return a winid for the named child window of the parent window specified in the functions first parameter.
  • partial-child-winname - (optional) Name of child window. When this parameter is an empty string or not supplied at all the function returns the "Window ID" of the parent window whose name appears in the first parameter.
  • WinIdConvert(i/s:hwnd-winid):
  • A new function that returns a raw window handle when passed a "Window ID" (pseudo-handle) or a "Window ID" when passed a raw window handle. This function provides interoperability between WIL Windows function with calls to the Windows API using DllCall, Control Manager functions, and WIL Dialog callback procedures. hwnd-winid - Either a window handle or a WIL "Window ID".
  • Modified the following functions to accept a "Window ID" (pseudo-handle) in the partial-child-winname parameter.
  • MouseClickBtn
  • MouseCoords
  • MouseMove
  • MousePlaychil
  • WinActiveChild
  • WinExistChild
  • WinPlaceChild
  • WinPositionChild
  • WinWaitChild
  • WinBatch Compiler 64-bit:
  • Addressed issue with Windows File Explorer file common dialog that caused the compiler to abruptly terminate on some computers.
  • WinBatch Studio:
  • Modified the wCut, wCopy, wCopyLine, wPaste, wCutLine, wCopyAppend, wCutAppend, wCopyMarked, and wCutMarked WinBatch Studio commands to shorten the delay between cliboard access attemps.
  • Removed the always disabled "Apply" button from the "View" menu's "Toolbars..." item property sheet.
  • Added a new Display runtime errors in Output window" option to the "File types" tab of the "Options" dialog for "WIL" files. When this option is checked the WinBatch Studio debugger displays WIL script errors in the new "Errors" tab of the WinBatch Studio Output window. Clicking on an error in the "Errors" window places the input cursor at the beginning of the line in the file that caused the error. When active this option aids in debugging scripts with default WIL error handling disabled. This option is enabled by default.
  • Added new 'Find in Project...' menu item to the Projects main menu. This menu item displays a project search dialog. Use the dialog to search the files of the currently selected Project Tree project. The menu item is enabled when Project Tree window visible and a project is selected in the tree. This menu item can also be found in the context menu of a
  • project of the Project Tree window. The context menu displays by left-clicking on the project name.
  • The 'Find in Project' dialog has the following items:
  • Find what Text to find. Enter new text or select previously searched text fromthe dropdown.
  • Find This button begins a search of the files of the selected project. The button's text displays the "Stop find" text when you display the dialog during a search. Pressing the button when it is displaying this text halts the current search and the "Stop Find" button text will eventually change back to "Find" after the search is halted.
  • Cancel
  • This button dismisses the dialog without taking and action.
  • Match case
  • Checking this box causes the search to be case sensitive. Otherwise, the search is case-insensitive.
  • Regular expression Checking this box causes the search text to be treated as a regular expression. Note: regular expression support is very limited so use of this search option is not recommended.

New in WinBatch 2018B (May 23, 2018)

  • DLL 6.18brb Additions and changes included in WB 2018B:
  • Modified the InitWritePvt function to return @True on success and return @False when the write fails. Previously, the function always returned @True.
  • Added support for two new "data type" values to IntControl 32:
  • "LONG64" - returns or sets a 64-bit integer value.
  • "LONG_PTR" - returns or sets a 32-bit integer value in 32-bit WinBatch and a 64-bit value in 64-bit WinBatch.
  • Added support for the new "LONG_PTR" parameter type to the DllCall and DllCallcdec functions:
  • "LONG_PTR" - accepts a 32-bit integer when called with 32-bit WinBatch and a 64-bit integer when called with 64-bit WinBatch. (Values may be represented as huge numbers.)
  • Modified the BinaryTagInit function to accept an empty string in the start-tag (second) parameter. When the start-tag is an empty string, the function treats the beginning of the binary buffer as the start of the first tag pair. Any following pairs start just after the last found end-tag.
  • New Function:
  • BinaryPeek8(i:handle, i:offset)
  • BinaryPeek8 returns the 64-bit value as a huge number.
  • "handle" - handle to binary buffer.
  • "offset" - zero-based offset in the buffer of the first byte of the 64-bit value.
  • BinaryPoke8(i:handle, i:offset, s/i:value)
  • BinaryPoke8 adds an 8-byte value to a binary buffer starting at "offset".
  • "handle" - handle to binary buffer.
  • "offset" - zero-based offset in the buffer of the first byte of the 64-bit value.
  • "value" - 8-byte value to insert into the binary buffer at offset. Integer values greater than or less than the maximum or minimum 4-byte signed integer value must be represented by a huge number (digits enclosed in quotes.)
  • 64-bit WinBatch only:
  • Approximately doubled the maximum allowed number of array elements.
  • Increased total string storage capacity by 50% to 375 MB.
  • Increased the maximum size of a single binary buffer to 2GB. It is now also possible to have multiple binary buffers of up to 2GB allocated at the same time. The total memory available for all binary buffers dependents on the maximum memory limit of the version of the 64-bit Windows operating system, and the available physical and virtual memory of the system executing the script.
  • Fixed problem that prevented 64-bit dialogs from loading the Browser and HTML COM servers into COMCONTROLs on Windows 10 version 1709 and newer versions of Windows.
  • Modified the 64-bit Compiler to work around a defect in a security software product that could cause access violations in both compiled WinBatch script and the compiler.
  • Four 64-bit extenders required modifications to support expanded memory. Older 64-bit versions of these extenders cannot be used with this and future versions of 64-bit WinBatch. The four extenders along with their minimum required version are listed below:
  • 64-Bit Extender Minimum Version
  • ODBC (wwodb64i.dll) 44018
  • Win32 Network (wwwnt64i.dll) 39025
  • WinInet (wwint64i.dll) 44088
  • WinSock (wwwsk64i.dll) 44007
  • WinBatch Studio and WinBatch Compiler Lexical Analyzer changes:
  • Added function parameter count checking for WIL Extenders, WinBatch Studio, and WinBatch functions.
  • Added check for assignment to WIL Extender defined constants. Note that assignment to a WIL Extender constant generates an error even if the extender is not loaded into the script being analyzed.
  • Modified parsing of the parenthetical operand of the dereference operator (*) to prevent incorrect error generation went the Analyzer is parsing valid reference operator syntax.
  • Fixed handling of multiple substitution variables in string literals to prevent generation of a "Variable name to long" error when substitution variable names are not over the maximum allowed length.
  • WIL Dialog Editor changes:
  • The Dialog Editor now loads and parses dialog templates without the assistance of the WIL interpreter DLL. Substitution is no longer performed on template string literals and the substitution syntax is preserved when embedded in the dialog's title, or a control's name and text attributes
  • It is possible to still load templates into the Dialog Editor using the WIL interpreter DLL by using one of the two new File menu items
  • Open with WIL - Loads a template from a file with the assistance of the WIL interpreter DLL
  • Open from Clipboard with WIL - Loads a template form the clipboard with the assistance of the WIL interpreter DLL
  • When these two menu options are used, substitution is performed on the dialog templates so any substitution syntax will not be preserved when the loaded template is saved to the clipboard or a file
  • Note that the File menu's MRU menu items always use the WIL Dialog Editor's new built-in template loader/parser
  • Added the ability to scroll the Editor's dialog editing area. This enables the creation of dialogs with dimensions that do not fit on the current system's display

New in WinBatch 2018A (Feb 2, 2018)

  • Replaced copyrights, icons and embedded images.
  • Modified uninstall program to account for multiple paths in the TEMP and TMP environment variables.
  • Changed the sort algorithm used by the ArraySort function to eliminate worst case slow sorts. The change also prevents the 1637 error, "Error accessing array data" when sorting a large array with frequently repeating sort data.
  • WinBatch Studio:
  • Fixed unhandled exception in WIL file type syntax coloring.
  • Fixed memory corruption problem in output window implementation.
  • This release of WinBatch Studio includes the new Lexical Analyzer module:
  • Added an 'Analyze' menu item to the debug menu bar menu. Select this menu item to invoke the Syntax Analyzer on the current foreground document. The Syntax Analyzer tool scans the current script for syntax errors without actually executing the script.
  • Any errors are displayed in the "Syntax Analyzer" tab of a WinBatch Studio output window automatically displayed by the Analyzer.
  • Each error line in the Analyzer window represents one error. A single line in the script can produce more than one error. Error lines consist of a full path-name of the file being analyzed, the row and column numbers of the error's location in the script, the word "error" or "warning", an error number, and a brief error description.
  • Using your mouse to left click on an error in the Syntax Analyzer window will set the WinBatch Studio input cursor to the beginning of the line in the current script that contains the error.
  • A few thing to remember when using the Syntax Analyzer:
  • Variable values are not checked because the script is not executed.
  • The Analyzer cannot determine the resulting syntax of substituted variables.
  • The grammar of function parameters is checked but not the correctness of parameter values.
  • The Analyzer can be used on WIL menu files but menu names line generate "unexpected item found online" errors. Ignore these errors.
  • Files included in the current script using an "#include" statement are not analyzed.
  • WIL function parameter counts ARE checked.
  • Extenders are not loaded so extender function parameter counts are not checked.
  • WinBatch function parameter counts are not checked.
  • WinBatch Compiler:
  • This release of the WinBatch Compiler also includes the Lexical Analyzer module:
  • The Compiler's main dialog window contains a new "Analyze source for error" checkbox.
  • When this check box is checked, the compiler will use the Lexical Analyzer module to scan the target script for errors before compilation begins.
  • If any errors or warnings are found, the Compiler can display a dialog showing a list of errors and warning. Press this dialog's "Continue" button to proceed with the compilation or press the "Cancel" button to either return to the main Compiler window or exit the compiler when the compiler starts with a command line target. In all cases pressing the "Cancel" button prevents the target from being compiled.
  • The "Analyze source for errors" checkbox option is global. Once it is checked, syntax checking is performed on all compiles by the WinBatch+Compiler user until it is unchecked.
  • If the "Analyze source for errors" option is selected, the compiler is invoked with the target script as a command line parameter, and the target script's "cmp" file contains the "silent=1" option; the Compiler generates a text file of any found errors. The syntax error dialog is not displayed.
  • The compiler also generates an error file instead of displaying the syntax error dialog when it is invoked with a "cmplst" file as a command line parameter.
  • In both instances, the error file name is the target script's file name with a time stamp and a ".txt" file extension. The file is placed in the target's location on the file system.

New in WinBatch 2017B (Apr 13, 2017)

  • Fixed interpreter problem that prevented the use of conditional control statement reserved
  • words as the first word of a multiline sting line within an non-executing conditional
  • statement block.
  • Fixed a problem in file related functions that accept a delimited list as input. This
  • problem caused these functions to ignore remaining list items after processing the files
  • matching a list item containing one or more wildcards characters. The problem affected the
  • FileAppend, FileAttrSet, FileAttrSetEx, FileCopy, FileCopyAttr, FileDelete, FileMove,
  • FileMoveAttr, FileRename, FileSize, FileSizeEx, FileDelete, FileTimeSet, FileTimeSetEx and
  • FileTimeTouch functions.
  • Added a new p1 option to Intcontrol 93 to support RFC-3161-compliant Timestamp Authority
  • services for time-stamping signed files. This option is only available when WinBatch is
  • running on Windows 8/2012 and newer Windows operating systems.
  • p1 Meaning
  • 3 Sign a file and use an RFC-3161-compliant Timestamp Server (Windows 8 or newer.)
  • p2 specifies a tab-delimited string with the following six parameters:
  • file to sign
  • certificate friendly name
  • description of file being signed (can be "" if not needed)
  • location (URL) of information about file (can be "" if not needed)
  • URL of RFC-3161-compliant timestamp server (can be "" if not needed)
  • timestamp server's hash algorithm: sha1, sha256, sha385, or sha512 (defaults
  • to sha256 if "" and ignored if no timestamp server provided)
  • Note that when Microsoft implements "Phase Three" of their SHA-1 phase out, newer
  • versions of Windows may treat signed files timestamped using a legacy SHA-1 hash
  • timestamp server as untrusted after the signing certificate's expiration date has
  • passed. Microsoft currently states that, "Long-term, Microsoft intends to distrust SHA-1
  • throughout Windows in all contexts. Microsoft is closely monitoring the latest research
  • on the feasibility of SHA-1 attacks and will use this to determine complete deprecation
  • timelines."
  • Also note that only SHA-1, Authenticode timestamped files are recognized as trusted on
  • Windows Vista/2008. Fully updated versions of Windows 7/2008R2 and all newer versions of
  • windows trust SHA-256, RFC-3161-compliant timestamped files.
  • New Function:
  • TimeFormat(s:ymdhms, s:format)
  • Returns the date and/or time as a text string in the indicated format. The maximum
  • total expanded size of the returned string is limited to 2048 characters.
  • "ymdhms" - Date/time in YYYY:MM:DD:HH:MM:SS WIL time format.
  • "format" - String indicate the date and/or time format of the date and/or time
  • returned by the function. The following table lists the standard Windows
  • date and time format characters accepted by the function. Non-format
  • character are accepted but should be enclosed in single (') quotes to avoid
  • non-format characters being used for date/time formatting. In order to
  • include a single quote in the returned text escape it with a second single
  • quote. For example, '''' will create one single quote in the return text.
  • Format Used For Description
  • d Days Displays the day as a number from 1 to 31
  • dd Days Displays the day as a number with a leading 0 if the number
  • is less than 10
  • ddd Weekdays Displays a weekday name with 3 letters as Mon, Tue, etc
  • dddd Weekdays Displays the complete name of a week day as Monday, etc
  • M Months Displays the numeric month from 1 to 12
  • MM Months Displays the numeric month with a leading 0 if the number is
  • less than 10
  • MMM Months Displays the short name of the month as Jan, Feb, Mar, etc.
  • MMMM Months Displays the complete name of the month as January, etc
  • yy Years Displays two digits for the year as 00 for 2000 or 03 for 2003
  • yyyy Years Displays the numeric year with 4 digits
  • h Hours Hours with no leading zero for single-digit hours; 12-hour
  • clock.
  • hh Hours Hours with leading zero for single-digit hours; 12-hour clock
  • H Hours Hours with no leading zero for single-digit hours; 24-hour
  • clock
  • HH Hours Hours with leading zero for single-digit hours; 24-hour clock
  • m Minutes Minutes with no leading zero for single-digit minutes
  • mm Minutes Minutes with leading zero for single-digit minutes.
  • s Seconds Seconds with no leading zero for single-digit seconds
  • ss Seconds Seconds with leading zero for single-digit seconds
  • t Time Mark Two-character abbreviation (for example, AM or PM)*
  • * This function does not support single character time marks.
  • FileMenu Shell Extension
  • Added workaround for a defect in Windows Explorer on Windows 7 and older versions of
  • 64-bit Windows. This defect caused duplicate FileMenu menu items to appear when the
  • Explorer window's "File" menu bar item was repeatedly selected while a file name was
  • selected in the file list window.
  • Add the "wbt64" file extension to the filemenu.ini file. The extension is mapped to the
  • same "FileMenu for WinBatch files.mnw' menu file used for the "wbt" extension.
  • Changes to the Dialog and related functions
  • Added support for an optional date ranges to the CALENDAR control. The control's
  • variable can now contain a vertical bar(|) delimited list of YMDHMS date values. The
  • first item of the list is used as the control's initial date. The second item is the
  • minimum date the control will accept and the third item is the maximum date the control
  • will accept. The CALENDAR control's range can also be set using the DialogControlSet
  • function with the @Date request code and a vertical bar(|) delimited list of YMDHMS
  • date values.
  • Increased the maximum number of control definitions recognized per dialog template from
  • 300 to 500.
  • Compiler
  • Added new "Use RFC 3161 Timestamp" option to the "Code Signing Details" dialog. When
  • this option is checked the compiler will timestamp the executable using a
  • RFC-3161-compliant timestamp server and the more secure SHA-256 hash algorithm. When
  • this option is not checked the compiler will use an Authenticode timestamp server and
  • the SHA-1 hash algorithm to timestamp the executable file.
  • This option is enabled when the compiler is executing on Windows 8/2012 R2 and newer
  • versions of Windows. It is disabled on older versions of Windows because older
  • platforms lack the functionality necessary to support RFC-3161-compliant timestamp
  • servers for timestamp operations.
  • Windows Vista/2008 cannot process RFC-3161-compliant timestamps and will consider
  • applications timestamped using an RFC-3161-compliant timestamp server untrusted.
  • Windows 7/2008R2 and newer versions of Windows trust executables timestamped using
  • an RFC-3161-compliant timestamp server.
  • As mentioned in the new IntControl 93 p1 option notes, Microsoft states that,
  • "Long-term, Microsoft intends to distrust SHA-1 throughout Windows in all contexts.
  • Microsoft is closely monitoring the latest research on the feasibility of SHA-1 attacks
  • and will use this to determine complete deprecation timelines."

New in WinBatch 2017A (Jan 5, 2017)

  • DLL 6.17aqa First showing up in WB 2017A
  • Fixed defect in the BoxTitle and BoxOpen functions that could cause process memory corruption when the title parameter contained text longer than 256 characters.
  • Fixed defect in AskFileName function that made it necessary to provide at least one file type definition when using flag parameter values of 100 or higher.
  • Added new flag value to AskDirectory:
  • 32 makes directory browse dialog an owned window. The value 32 can be combined with other flag parameter values.
  • Modified IntControl 78 to to make it possible to free a single UDF or UDS. To free a single UDF or UDS specify a value of 1 in the p1 parameter and place the name of the UDF or UDS to be freed in the p2 parameter. A single UDF or UDS cannot be freed while it is executing.
  • Added more descriptive error message when a UDF or UDS associated with a callback handle by
  • DllCallbackCreate' is used by a process thread other than the main WIL thread.
  • Added extended-length path support to the following file and directory functions:
  • DirAttrGet
  • DirAttrGetEx
  • DirAttrSet
  • DirAttrSetEx
  • DirExist
  • DirInfoToArray
  • DirMake
  • DirRemove
  • DirSize
  • FileAppend
  • FileAttrGet
  • FileAttrGetEx
  • FileAttrSet
  • FileAttrSetEx
  • FileCompare
  • FileCopy
  • FileDelete
  • FileExist
  • FileGet
  • FileGetW
  • FileInfoToArray
  • FileItemize
  • FileItemPath
  • FileMapName
  • FileMove
  • FileNameLong
  • FileNameShort
  • FileOpen
  • FilePut
  • FilePutW
  • FileRename
  • FileSize
  • FileSizeEx
  • FileTimeCode
  • FileTimeGet
  • FileTimeGetEx
  • FileTimeSet
  • FileTimeSetEx
  • FileTimeTouch
  • FileVerInfo
  • FileYmdHms
  • The following functions support extended-length paths but require extended length file paths be converted to a Unicode string before being passed to the function:
  • BinaryRead
  • BinaryReadEx
  • BinaryWrite
  • BinaryWriteEx
  • Extended-length paths are file and directory names that have a combined length greater than 259 characters with a maximum length of approximately 32766 characters. When passing an extended path to a supporting function, the path must be an absolute path. It cannot be a partial nor relative path and path segments must be separated by back slashes (). Forward slashes (/) cannot be used. Either the "\?" prefix for local path or the "\?UNC" for UNC paths can be added to beginning of a path to improve performance. The "\?" prefix should be placed before the drive letter of a local path. The "\?UNC" prefix should replace the leading "\" for UNC (share) paths. Supporting functions that return absolute paths automatically include the appropriate extended-length path prefix when the total length exceeds 259 characters. Note that optical media, like the ISO 9660 CD/DVD format, often have more restrictions on the length of files, folders, and paths than the Windows operating system so these devices may not support extended-length paths.
  • New IntControl:
  • IntControl(99, p1, 0, 0, 0)
  • Unloads a previously added extender. Returns 1 if the extender was unloaded and 0 otherwise.
  • p1 File name of extender to unload.
  • WinBatch Studio:
  • Eliminated UI artifacts in the Project Window on Windows XP systems.
  • Project file items are now either selected or highlighted when added to a project in the Project Window tree.
  • Common Language Runtime (CLR) Hosting:
  • Improved support for multiple field structs (value types) returned by dotNet object methods and properties. Note that structs must still have the COM Visible attribute in order to create an instance of the struct in a WIL script.
  • Added a "useany" option to the 'ObjectClrOption' function. The option is similar to the function's "use" option for loading assemblies except that it does not require a strong assembly name. Instead the option attempts to load an assembly using the assembly's weak name. An assembly's weak name is an assembly name without the Version, Culture, PublicKeyToken and optional processorArchitecture values. The function performs the "useany" task by searching the Global Assembly Cache (GAC) for the latest version of the named assembly. It is not necessary to use the option to load non-GAC assemblies because the CLR does not require that non-GAC assemblies have strong assembly names. Setting the CLR version using this function's "version" option limits "useany" to search for GAC assemblies associated with the specified version and older versions of the CLR.
  • Changes to the Dialog and related functions:
  • Added a DATETIME control. The DATETIME control is the WIL Dialog implementation of the Date and Time Picker Windows Common Control. It can be used to both display and receive date and time input in multiple formats.
  • The DATETIME control uses all dialog template control definition attributes except 'value' with the following control specific meanings:
  • var - The name of a variable that receives the user selected date/time from the control on a non-canceling exit from the dialog. Optionally, the variable can contain a vertical bar(|) delimited list of YMDHMS date and time values. The first item of the list is used as the control's initial date/time. The second item is the minimum date/time the control will accept and the third item is the maximum date/time the control will accept. Use an empty list elements to use the control's default for the respective item. Using DEFAULT instead of a variable name sets the date/time to the current date/time with control defined limits.
  • text - The text attribute is used to indicate the date/time format the control displays. Specifying 'DEFAULT' or using an empty string causes the control to use the current system default date format. The following table lists the standard Windows date/time format characters accepted and interpreted by the control. Nonformat character are accepted but they must be with a few exceptions enclosed in single (') quotes.
  • Format Used For Description
  • d Days Displays the day as a number from 1 to 31
  • dd Days Displays the day as a number with a leading 0 if the
  • number is less than 10
  • ddd Weekdays Displays a weekday name with 3 letters as Mon, Tue, etc
  • dddd Weekdays Displays the complete name of a week day as Monday, etc
  • M Months Displays the numeric month from 1 to 12
  • MM Months Displays the numeric month with a leading 0 if the number
  • is less than 10
  • MMM Months Displays the short name of the month as Jan, Feb, Mar, etc
  • MMMM Months Displays the complete name of the month as January, etc
  • yy Years Displays two digits for the year as 16 for 2016 or 03 for
  • 2003
  • yyyy Years Displays the numeric year with 4 digits
  • h Hours Hours with no leading zero for single-digit hours; 12-hour
  • clock.
  • hh Hours Hours with leading zero for single-digit hours; 12-hour
  • clock.
  • H Hours Hours with no leading zero for single-digit hours; 24-hour
  • clock.
  • HH Hours Hours with leading zero for single-digit hours; 24-hour
  • clock.
  • m Minutes Minutes with no leading zero for single-digit minutes.
  • mm Minutes Minutes with leading zero for single-digit minutes.
  • s Seconds Seconds with no leading zero for single-digit seconds.
  • ss Seconds Seconds with leading zero for single-digit seconds.
  • t Time Mark One-character abbreviation (for example, A or P).
  • tt Time Mark Two-character abbreviation (for example, AM or PM).
  • style - The control supports the @csInvisible(1) and @csDisabled(2) styles. In addition the control accepts the following new styles:
  • csCheckbox (134217728) - Adds a check box that indicates no date/time value when unchecked.
  • csSpinner (536870912) - Replaces the controls drop down calendar with a spinner. The spinner can be used to change the value of individual elements of the displayed date-time.
  • font - Sets the display font for both the edit and drop down calendar elements of the control.
  • textcolor - Sets the text color for the drop down calendar element only.
  • backgroundcolor - Sets the background color for the drop down calendar element only. Added the following new event code to the 'DialogProcOptions' function in support of the
  • new DATETIME control:
  • deDtChange(23) - Date or time change: user has changed the date/time. This event also fires if the date/time range is changed and the current value of the DATETIME control does not fall within that range. The new control date/time is passed to user defined callbacks in the callback's fifth parameter.
  • Modified the 'DialogControlGet' function to support a new DATETIME request codes:
  • @dcFormat(28) - Returns a DATETIME control's current format as a string. The function returns an empty string if no format was previously specified.
  • Use the @dcDate(7) request code to obtain the date/time shown in the control in YYYY:MM:DD:HH:MM:SS format. Use the @dcText request code to obtain the date/time as text in the format displayed by the control.
  • Modified the 'DialogControlSet' function to support a new DATETIME request codes:
  • @dcFormat(28) - Sets a DATETIME control's current display format using the special format characters also used in the control's template text attribute.
  • Use the @dcDate(7) request code to set the date/time shown in the control. The date/time should be in the YYYY:MM:DD:HH:MM:SS format with one exception. When the control has the @csCheckBox style, an empty string ("") can be sent to the control to uncheck the control's chechbox. The empty string does not change the displayed date/time. The control's range can also be set using a vertical bar(|) delimited list of YMDHMS date and time values. Neither the @dcText nor @dcTitle request code can be used to set the displayed date.
  • The DialogControlState request code @dcsGetStyle can be used to determine whether or not the @csCheckBox and @csSpinner styles are set for the DATETIME control However, the @dcsRemStyle or @dcsAddStyle request codes cannot be used to change the @csCheckbox and @csSpinner styles. The @dcsRemStyle or @dcsAddStyle request codes can be used to change the DATETIME control's @csInvisible and @csDisabled styles.

New in WinBatch 2016B (May 19, 2016)

  • DLL 6.14bpb First showing up in WB 2016B
  • Added support for dynamic array creation and redimensioning of WIL and COM variant arrays. Arrays are created dynamically by assigning a value to a previously undefined variable using brackets and comma separated subscripts array syntax following the new variable's name. Existing arrays can be redimensioned by assigning a value to an array element that is beyond the upper bound of an existing dimension or adding a new dimension to the array's comma separated subscript list. Dynamic array assignment is optimized for single dimension arrays. Use in redimensioning multi-dimension arrays is significantly slower than initially creating an array with the highest required array subscripts. An existing non WIL array variable cannot be converted to an array by using array subscript syntax with the existing non array variable's name. Doing so will result in an "Expression continues past expected end." error.
  • Added support for the BYREF variant type to the ObjectType function. Use the BYREF variant type in combination with another type to create a reference to a variant of the indicated type. The BYREF type cannot be used alone or in combination with the ARRAY or VECTOR variant types. Separate the two types passed to ObjectType with a vertical bar (|) to form a BYREF type combination. The BYREF type can also be used in combination with another type when specifying a COM Automation object method parameter's type using the BYREF type combination followed by a single colon(:) and then the expression that evaluates to the parameter's value.
  • Modified the 'ObjectType' function's handling of uninitialized WIL array elements when converting a WIL array to a COM variant array (safearray) and no element type is used along with the 'ARRAY' variant type. Previously, the function converted initialized elements to to variant type 'ERROR' but it now converts uninitialized elements to the 'EMPTY' variant type. This change prevents 'Type mismatch' errors when assigning values to uninitialized COM variant array elements.
  • Fixed a parser defect that caused an error message when a colon(:) concatenation operator immediately followed the end of a multiline text string constant without any intervening white space.
  • Modified the Setup program to register WinBatch Studio so that it appears as an option in Window's File Manager 'Open with...' context menu dialog on Windows 10 systems with no previous WinBatch installation.
  • Modified WIL interpreter DLL loading and unloading to reduce the possibility of FileMenu causing the Explorer shell process to restart on no-reboot-requested installs of WinBatch or WinBatch+Compiler over an existing WinBatch or WinBatch+Compiler installation. Note that this change only affects the installation of future versions of WinBatch or WinBatch+Compiler over this and future version of WinBatch or WinBatch+Compiler and does not affect installing this version over older versions of WinBatch or WinBatch+Compiler. Also note that a reboot is still recommended after a WinBatch or WinBatch+Compiler installation even when the Setup program does not prompt for a reboot.
  • Added a third parameter to the "WindowOnTop" function. "Retry" - (Optional) Set to a @False (default) or @True value to indicate whether or not the function should use the current WIL retry timeout setting when a window name is provided in the function's first parameter. Set to @True to have the function use the current timeout setting. Set to @False or omit, to have the function immediately generate an error when the target window is not found. The parameter is ignored when the first parameter is a window id. Note that IntControl 46 can be used to change the current retry timeout setting (default is 9 seconds.)
  • Added support for multiline string to DllStructAlloc's member-descriptor parameter. Note that per multiline string requirements the member-descriptor's data type and name separator colon (:) character must be escaped by using a double colon (::) instead of the single colon and that a type/name member pair must be on the same line. Multiple pairs can be on a single line, however.
  • WinBatch Studio:
  • Fixed several incorrect syntax coloring problems related to multiline string constants. Fixed 'Projects' menu's 'Open Project File' menu item not being enabled when a project file is selected.
  • Corrected a problem that caused the dockable Project Tree toolbar dialog to display without the 'Default' workspace name and icon the first time WinBatch Studio was started after a clean installation of WinBatch or WinBatch+Compiler.
  • The Project Tree toolbar dialog is now toggled on and off solely by the 'Project Tree' menu item of the 'View' menu bar menu. Previously, the 'Restore workspace at startup' option blocked display of the Project Tree toolbar at WinBatch Studio startup when the 'Restore workspace at startup' option was not checked.
  • Modified the 32-bit and 64-bit debuggers to set the debug process's current working directory to the location of the script being debugged. The current working directory is restored to its previous setting when the debug session ends.
  • Added 'Run' menu item to the context menu of the project toolbar window. The menu item executes a WIL script in a separate WinBatch process. The 'Run' menu item only displays for WIL file type files.
  • Added a new 'Debug Parameters...' menu item to the 'Debug' main menu bar dropdown menu. Use this menu item to displays a Debug Parameter dialog. The dialog allows you to create, remove, move and change WIL script parameters passed to the current WIL script when it is executed using the 32 and 64 bit Run, Debug, Step Into, Step Over or Run to Cursor commands. Debug parameters are not supplied to WIL scrips executed using the Project Tree toolbar dialog's Run context menu. Debug parameters remain associated with a script for as long as the script file is an open document associated with a workspace. The parameters will remain associated with a file in the current workspsce between WinBatch Studio sessions when the "Restore workspace at startup" option is selected. The parameters will also remain associated with a file even when the "Restore workspace at startup" is not selected, if the file's saved workspace is not the current workspace at session end.
  • The Debug Parameters dialog displayed by selecting the 'Debug Parameters...' menu item allows you to create, remove, move and change the parameters passed to a WIL script. The dialog displays the list of parameters, one per line, along with a toolbar. The list's toolbar buttons and the dialog's buttons perform the following tasks:
  • New button. Creates a new parameter. Enter the parameter value in the edit box displayed in the toolbar's list and press return or click on the list outside of the edit box to create the parameter.
  • Delete button. Deletes a selected parameter from the list.
  • Move up button. Moves a selected parameter toward the top of the parameter list. This changes the order in which the parameters are passed to the WIL script.
  • Move down button. Moves a selected parameter toward the bottom of the parameter list. This changes the order in which the parameters are passed to the WIL script.
  • Clear All. Removes all parameters associated with the current WIL script.
  • OK. Saves changes and dismisses the dialog.
  • Cancel. Closes the dialog without saving changes.
  • Note that it is unnecessary to quote parameter values unless you want quotes to be part of the parameter value passed to the WIL script.

New in WinBatch 2016A (Feb 11, 2016)

  • DLL 6.14apa First showing up in WB 2016a
  • The RegOpenKeyEx was modified to only require that 3 parameters instead of 5 by making the 4th and 5th parameters optional
  • Added support for 0 (REG_NONE) value type to the RegSetEx function's 5th parameter. When this type is used the values of the function's 3rd and 4th parameters are ignored
  • Corrected problem in the DllStructPeek function that sometimes caused truncation of returned Unicode string structure members
  • Added support for multiline text string constants
  • Multiline text string constants are text string constants that occupy more than one line in the body of a script. Only the dollar-sign + double-quote character combination($") can be used to enclose a multiline string constant. With the few exceptions noted below all text appearing between the beginning '$"' delimiter and ending '$"' delimiter are included in the resulting constant's text. This includes the ASNI new line (line-feed) character that delimits each line in scripts and any white-space characters. Note that
  • when a script line is delimited by the carriage-return + line-feed combination, the carriage return is converted to a space and the line-feed character is retained
  • In order to maintain preprocessor performance the colon(:) and number-sign(#) characters must be escaped in multiline text string constants. To place a single colon or number-sign in a multiline text string, specify a double colon(::) or number-sign(##). The failure to escape these characters results in an error
  • As is the case with single line text string constants, to place a single percent-sign (%) in a multline text string constant specify a double percent-sign(%%)
  • To include a single multiline text string constant delimiter($") in a constant's text use a double combination($"$")
  • To use multiline text string constants in the 'then' or 'else' clause of the single statement form of the 'if' statement syntax, each line of the constant after the first line must begin with either a 'then' or an 'else'. Any white-space characters before the then' or 'else' and one white-space character after the 'then' or 'else' are not included in the text constant. Note that multiline text string constants are used as is without the special single line syntax requirements in structured 'if' syntax code blocks Substitution is permitted in multiline text string constants
  • PopMenu:
  • Modified active window detection so that it blocks use of Windows Runtime application windows on Windows 10 unless no regular desktop window is active. This change does not affect PopMenu on older versions of Windows
  • WinBatch Studio:
  • Fixed problem in the Options dialog's File Type tab's Font selector that prevented the Bold or Italic font style selections from being recognized
  • Miscellaneous usability fixes and improvements
  • Added multiline string syntax coloring
  • This release introduces the concepts of tabbed editing, workspaces and projects to WinBatch Studio
  • Added a 'Tab View' menu item to the View menu bar menu. Selecting this menu item turns tab style file viewing on and off in the main editor window. Tabs are located Microsoft Excel style near the bottom of the main window
  • Added a 'Project Tree' menu item to the View menu bar menu. This menu item toggles the display of a dialog toolbar window containing a hierarchical display of all user created projects associated with the current workspace
  • Added a new 'Projects' menu item to the main menu bar. This menu item contains menu and sub menu use to create, modify, and control workspaces and projects. Many changes made with these menu items are reflected in the project dialog toolbar. Project related menu items are only enabled when the project toolbar window is visible. The new menu has the following menu items
  • 'Add' This sub menu displays 4 menu items
  • 'New Project' This menu item displays a dialog that allows you to create a new project in the current workspace or as a sub project of the current project in the workspace
  • 'New File' Displays a dialog that allows you to add a new file item in the current project. Note that the file is not physically created on the computer's file system
  • 'Existing Files' This menu item displays a standard file selection dialog that allows you to add one or more existing files to the current project
  • 'Current File' Use this menu item to add the file currently displayed in the main window to the current project. Note that the 'Add' menu items are also available as Project Tree dialog toolbar context menus items
  • Open Project File' Opens the currently selected file in the main file viewing area. Note that double-clicking a file item in the project tree dialog toolbar will also open the selected file in the main file viewing area of the editor
  • 'Remove' Removes the currently selected file or project from its containing project or workspace. Note that removed files are not deleted from the file system
  • 'Workspaces' This menu item displays the workspace manager dialog. This dialog allows you to create, remove rename or select a workspace as the active workspace. A workspace consists of user defined tools projects, project files and open windows.
  • 'Close Workspace' Closes a currently open workspace. The names of the most recently used workspaces are display below the 'Close Workspace' item. Selecting a workspace name makes the workspace the active workspace. The Workspace Manager dialog is displayed by selecting the 'Workspaces' menu item. It allows you to create, rename, open and close WinBatch Studio workspaces. The dialog displays a list of workspaces along with a toolbar. Use the list's toolbar buttons and the dialog's buttons to perform the following tasks
  • 'New button' Use to create a new workspace. Enter the workspace name in the edit box displayed in the toolbar's list and press return to create the workspace
  • 'Delete button' Deletes a selected workspace form the list
  • 'Move up botton' Moves a selected workspace name toward the top of the workspace list. This change is reflected in the workspace MRU
  • 'Move down botton' Moves a selected workspace name toward the bottom of the workspace list. This change is reflected in the workspace MRU
  • 'Open' Processes pending workspace changes, closes the Workspace Manger
  • dialog and makes the selected workspace the current workspace
  • 'Save' Processes pending workspace changes, saves the current state of the selected workspace and closes the Workspace Manger dialog. When a workspace state is saved all currently open document windows will be restored the next time the workspace is loaded into the editor
  • 'Done' Processes pending workspace changes and closes the dialog
  • 'Cancel' Closes the dialog without processing changes

New in WinBatch 2015B (Aug 4, 2015)

  • DLL 6.14bob First showing up in WB 2015b
  • Modified COM exception error reporting to display a system error number in the 'More Error
  • Info' dialog when text based exception information is not provided by the COM server
  • reporting the exception.
  • Modified setup.exe to allow the installation of WinBatch or WebBatch on install target hard
  • drives or shared folders with more than two terabytes of free space.
  • Added new optional parameter to the SendKey, SendKeyTo, and SendKeyChild functions. Use
  • the new parameter to indicate the number of seconds to delay between keystrokes sent to the
  • currently active or targeted window. Use a floating point number for the paramter's value
  • to indicate partial second values. When the parameter is used in a call to one of these
  • functions, the value overrides any keystroke timing value set using IntControl 35 for the
  • duration of the function call. If the char-string paramter of these functions contains
  • only one key value, the delay will occure after the keystroke is sent to the keyboard
  • driver but before the function returns.
  • Added Windows 10 OS support to the manifests of all distributed executables.
  • Modified the 'Two Explorers, side by side' menu item for both PopMenu and FileMenu so that
  • the menu item functions properly on Windows 10.
  • Added support for the LPVOID, LPCSTR, and LPCWSTR data type names in structure descriptor
  • strings passed to the DllStructAlloc function. Also added support for structure members
  • declared as pointer using a supported type name followed by an asterisk (*) character.
  • Note that the DllStructPeek and DllStructPoke functions do not perform any interpretation
  • of the contents of the memory location contained in a member with an asterisk modified data
  • type or the LPVOID data type.
  • Structure members declared as LPVOID or with an asterisk modifier will usually either
  • contain or should be set to a valid memory address or 0 depending on the requirements of
  • the DLL function using the structure. See IntControl 32, IntControl 42, and IntControl 98
  • documentation for more information about using raw memory addresses in WIL scripts.
  • Modifed the the WIL COM subsystem to workardound a defect on some versions of Windows in
  • the WMI service COM Automation exception reporting.
  • New Function:
  • WinIsRuntimeApp(s:partial-winname)
  • The function returns a @TRUE(1) when a window is associated with a Windows Runtime
  • App (Window Store App.) For most non Runtime windows, it returns @FALSE(0). Windows
  • associated with system processes, like the Windows shell's 'File Explorer' , do
  • cause the function to return @True even though the processes are not Windows Runtime
  • Apps. The function always returns @FALSE on Windows 7/2008 R2 and older versions of
  • Windows.
  • "partial-winname" - A window name that can be either an initial portion of, or an
  • entire window name.
  • The function only works with top-level (parent) application windows.
  • WinMacro:
  • WinMacro, the WinBatch macro recorder, returns as a menu option in PopMenu's main menu
  • on Windows Vista/2008 and newer versions of the Windows operating system. WinMacro
  • required extensive internal modifications to make it possible to record and playback
  • macros on newer versions of Windows. These changes impact both the behavior of
  • WinMacro's user interface and the user input events WinMacro can record and playback.
  • The user interface behavior changed in the following ways:
  • When the "Edit Script" toolbar button or "Edit" menu item is selected WinMacro now
  • automatically creates a script file version of the selected macro.
  • Once a script file for a macro has been created, WinMacro will always load and
  • execute the script version of the selected macro when the "Play" toolbar button or
  • menu item is selected. This means that any modifications made to the script are
  • always reflected during macro play back unless the "Save Macro as WinBatch Script"
  • options is unchecked in the "Save WinMacro Macro" dialog. When the option is
  • unchecked, WinMacro will play back the original macro as recorded.
  • It is no longer possible to change the playback speed after a macro is recorded.
  • The playback speed must be set before recording a new macro.
  • If WinMacro cannot find the script file version of macro previously converted to a
  • script, the macro cannot be played unless the "Save Macro as WinBatch Script"
  • options is unchecked in the "Save WinMacro Macro" dialog.
  • WinMacro now performs all macro playback using the WIL interpreter. This means that
  • only mouse movements, mouse button clicks, and key strokes are recorded. Mouse button
  • support is confined to the left and right mouse buttons. Other mouse buttons including
  • scroll wheel rotation or clicking are not subject to recording. The Window key is
  • supported but holding down the Windows key while repeatedly pressing another key is
  • interpreted as individual combined key events. This means that pressing and holding the
  • Windows key while repeatedly pressing and releasing the tab key cannot be recorded and
  • then used to cycle through currently running application windows on playback. Non
  • standard keyboard keys like the 'Fn' key found on many notebook computers are not
  • supported.
  • The format of the macro archive file (.waf) has changed. This change means that macros
  • recorded using the old WinMacro application can still be played on an Windows XP/2003
  • system using the new WinMacro but new macros cannot be added to old style archives
  • using the new WinMacro. In order to record new macros on Windows XP/2003 a new archive
  • must first be created.
  • The new WinMacro requires Windows XP or newer and cannot be used on Windows 2000 or
  • older versions of the Windows operating system.

New in WinBatch 2015A (Aug 4, 2015)

  • DLL 6.14aoa First showing up in WB 2015A
  • Entering license information for either the 32-bit or 64-bit version of WinBatch will now license
  • both versions of WinBatch and entering license information for either the 32-bit or 64-bit version
  • of the Compiler will also license both versions of the Compiler.
  • Fixed problem that caused the 'DialogControlGet' function to sometimes report incorrect error
  • information.
  • Fixed problem in the 'SnapShot' function that sometimes caused unexpected results when secondary
  • monitors were to the left or above the primary monitor on multi-monitor systems with an extended
  • desktop.
  • Fixed buffer overrun in the StrTypeInfo function.
  • Modifed PopMenuStarup program to start PopMenu without user consent when UAC prompting is disabled
  • on Windows 8/2012 and newer systems. This change only affects administrator accounts.
  • Modified the 'FileRename', 'FileMove', and 'FileDelete' functions to report any system error code
  • produced when the functions fail. The error code can be viewed by pressing the 'More Error Info'
  • button of the error message dialog box.
  • Added a new optional 'Flags' parameter to the 'StrTrim' function. The 'Flags' parameter is used to
  • have the function only remove space and tab characters from either the left-hand or right-hand side
  • of the function's string argument. Setting the parameter to 1 will cause the function to only
  • remove spaces and tab characters from the left-hand side of the string. Setting the parameter to 2
  • will cause the function to only remove space and tab characters from the right-hand side of the string.
  • Setting the parameter to 3 or not specifying the parameter causes default behavior which is to remove
  • space and tab characters from both sides of the string.
  • Added support for two new sort options to the 'ArraySort' function as alternatives to the default
  • 'WIL relational operator' sort. The new options are represented by two new WIL constants passed to the
  • function by way of its second parameter. The constants can be combined with either a @Descending or
  • @Ascending constant using the bitwise OR(|) operator.
  • @Stringsort - This option causes the ArraySort function to treat all array elements as text and
  • compare each element character by character. Character code point values are used for
  • comparisons without consideration of written language syntax or semantics. The contents
  • of array elements do not need to be text in order to use this option. This option cannot
  • be combined with the @Logicalsort option.
  • @Logicalsort - The ArraySort function will use a logical string comparison for sorting when this option
  • is specified. Digits in strings are treated as numerical content rather than text and
  • comparisons are not case-sensitive. This sorting algorithm is identical to the algorithm
  • used by Windows File Explorer to sort displayed file names. The contents of array elements
  • do not need to be text in order to use this option. This option cannot be combined with the
  • @Stringsort option and requires Windows XP/2003 or newer.
  • The decimal place display setting for floating point numbers as set by calling the 'Decimals' function can
  • influence the sort order of arrays with elements containing floating point numbers.
  • Added support for two new search options to the 'ArraySearch' function. The new options are represented by
  • the two new WIL constants also used by the 'ArraySort' function.
  • @Stringsort - Use this option to perform a fast binary search of arrays sorted by the ArraySort function
  • using the same option. The array must be sorted in ascending order and the search is always
  • case-sensitive. This option cannot be combined with any other search options.
  • @Logicalsort - This option is used to perform a fast binary search of arrays sorted by the ArraySort
  • function using the same option. The array must be sorted in ascending order and the search
  • is not case-sensitive. The option cannot be combined with any other search options and
  • requires Windows XP/2003 or newer.
  • The decimal place display setting for floating point numbers as set by calling the 'Decimals' function can
  • influence the search result when performing a fast binary search for a floating point number or performing a
  • fast binary search of any sorted array that may contain floating point numbers. Therefore, the decimal place
  • display setting in effect when sorting an array must also be in effect when performing a fast binary search
  • of an array.
  • New Functions:
  • FileLockItemize(s:filename [, n:flags]) - Requires Windows Vista/2008 or newer
  • The function returns a delimited list containing the full image file names of all running processes and
  • services that are currently using a file. Generally, in-use files cannot be deleted, moved to another
  • folder or overwritten. Typically, files that are opened without sharing enabled are treated as in-use
  • files. Common examples of in-use files include executable image files of running processes and '.DLL'
  • files currently loaded into running processes. The function returns an empty list, if 'filename' is not
  • locked by any processes.
  • "filename" - A single absolute or relative path + file name to be checked for locking.
  • "flags" - Optional @False or @True value to indicate whether or not the function should error when
  • "filename" cannot be found. The value @False (the default) instructs the function
  • to return an empty list when "filename" is not found. @True instructs the function to
  • report an error when the file cannot be found.
  • Notes: This function requires Windows Vista/2008 or newer. It cannot be used to identify the image file
  • of a process running on a remote computer nor will it return the image file names of elevated processes
  • when the function is used by a restricted WinBatch process. If a remote process is locking a local file,
  • the function may return a single word like 'system' to indicate that the file is in use but that the
  • process is unidentifiable. If only remote processes are locking a remote file on a share and that remote
  • file is checked using this function, the function will return an empty string.
  • Added 99 new Dialog function related constants to WIL. The following table list the constants along with
  • their value and brief description.
  • DialogprocOptions Constants (also passed to a user defined callback procedure in the second parameter.)
  • @deInit (0) The one-time initialization
  • @deTimer (1) Timer event
  • @dePbPush (2) PUSHBUTTON or PICTUREBUTTON pressed
  • @deRbPush (3) RADIOBUTTON selected
  • @deCbCheck (4) CHECKBOX checked
  • @deEdText (5) EDITBOX or MULTILINEBOX text edited
  • @deFlSelect (6) FILELISTBOX item selected
  • @deIbSelect (7) ITEMBOX item(s) selected
  • @deDlChange (8) DROPLISTBOX item selected
  • @deCaChange (9) CALENDAR date change
  • @deSpChange (10) SPINNER number change
  • @deClose (11) Close clicked (Made visible via DialogProcOptions 1002)
  • @deFlDblclick (12) FILELISTBOX double-click
  • @deIbDblclick (13) ITEMBOX double-click
  • @deComEvent (14) COMCONTROL Event notification from DialogObject (NOT DialogProcOptions)
  • @deMiSelect (15) MENUITEM selected
  • @deMiInit (16) MENUITEM being initialized
  • @deResize (17) Dialog resized
  • @deRvrSelect (18) REPORTVIEW row selected
  • @deRvrDblclick (19) REPORTVIEW row double-clicked
  • @deRviCheck (20) REPORTVIEW item's checkbox checked/unchecked
  • @deRviText (21) REPORTVIEW first column item's text changed
  • @deRvhClick (22) REPORTVIEW header clicked
  • DialogprocOptions Constants (not passed to a user defined callback procedure.)
  • @dpoDisable (1000) Codes -1=GetSetting 0=EnableDialog 1=DisableDialog 2=Disable and wait cursor.
  • @dpoBkground (1001) -1=Get Current otherwise bitmap or color string.
  • @dpoSysMenu (1002) -1=Get Current 0=none 1=close 2=close/min 3=close/max 4=close/min/max.
  • @dpoTitle (1003) Set/Get Dialog Title - (-1 to get.)
  • @dpoCtlName (1004) Returns the name associated with a control's number.
  • @dpoCtlNumber (1005) Returns the number associated with a control's name.
  • @dpoClientSize (1007) Returns a space delimited list of the width and height of the dialog's client area.
  • DialogControlState Constants
  • @dcsSetFocus (1) Give Control Focus.
  • @dcsGetStyle (2) Retrieves a control's style bits.
  • @dcsAddStyle (3) Gives a control a style.
  • @dcsRemStyle (4) Remove a control style
  • @dcsGetFocus (5) Returns the name of the control with the focus.
  • @dcsMouseOver (6) Centers the mouse cursor over a control.
  • Dialog Control Styles
  • @csDefault (0) Does nothing when used with DialogControlState. Same as DEFAULT in template.
  • @csInvisible (1) Sets a control invisible.
  • @csDisabled (2) Sets a control disabled.
  • @csListOnly (4) User cannot type text in edit box part of DROPLISTBOX. A template only style.
  • @csReadOnly (8) Sets a control to read-only (user cannot type in text.) Use with EDITBOX, MULTILINEBOX and SPINNER.
  • @csPassword (16) Places an EDITBOX in 'password mode' where only *'s are displayed.
  • @csDefButton (32) Sets a button as the default button. Use with PUSHBUTTON and PICTUREBUTTON.
  • @csDigits (64) Sets a control to only accept digits. Use with EDITBOX and MULTILINEBOX.
  • @csFlat (128) Gives a button a 'flat' or 'no depth' appearance. Use with PUSHBUTTON and PICTUREBUTTON.
  • @csNoAdjust (256) Turns off auto-height adjustment of an ITEMBOX or FILELISTBOX. A template only style.
  • @csCenter (512) Centers text in control. Use with VARYTEXT and STATICTEXT.
  • @csRight (1024) Set text flush-Right in control. Use with VARYTEXT and STATICTEXT.
  • @csCurLeft (2048) Sets input cursor to left edge of control without text being selected. Use with EDITBOX and MULTILINEBOX.
  • @csCurRight (4096) Sets input cursor to right edge of control without text being selected. Use with EDITBOX and MULTILINEBOX.
  • @csShield (8192) Display the Security Shield icon on a button control (Vista/2008 and newer.) Use with PUSHBUTTON and PICTUREBUTTON.
  • @csMenuCheck (32768) Adds a check mark graphic to the left of a menu item. Use with MENUITEM.
  • @csMenuRadio (65536) Adds a radio button like dot graphic to the left of a menu item. Use with MENUITEM.
  • @csMenuSep (131072) Makes a menu item a separator bar graphic. Use with MENUITEM.
  • @csMenuBreak (262144) Causes a menu item to start a new column. Use with MENUBAR.
  • @csNoHeader (524288) Removes the header bar from a REPORTVIEW control.
  • @csFirstHeader (1048576) First row of source array or file is used as column header text. Use with REPORTVIEW
  • @csGrid (2097152) Gives a REPORTVIEW control Grid lines.
  • @csSingleSel (4194304) Set a REPORTVIEW control to allow only one row to be selected at a time.
  • @csFullSel (8388608) Causes a REPORTVIEW control to highlight all row columns when the row is selected.
  • @csAsort (16777216) Causes REPORTVIEW rows to be sorted in ascending order.
  • @csDsort (33554432) Causes REPORTVIEW rows to be sorted in descending order.
  • @csColEdit (67108864) Causes a REPORTVIEW control to allow Editing of first column text.
  • @csColCheck (134217728) Add a checkbox to first column of each REPORTVIEW row.
  • @csIncHeader (268435456) Cause the column header text to be included when REPORTVIEW's contents are save to file or array.
  • DialogControlSet and/or DialogControlGet Constants
  • @dcCheck (1) Sets or gets the check state of a CHECKBOX or REPORTVIEW.
  • @dcDot (2) Sets or gets the dot graphic state of a RADIOBUTTON.
  • @dcText (3) Sets or gets the text in an EDITBOX or MULTILINEBOX.
  • @dcTitle (4) Sets or gets the text of a PICTURE, RADIOBUTTON, CHECKBOX, PICTUREBUTTON, VARYTEXT, STATICTEXT, GROUPBOX, PUSHBUTTON or MENUITEM
  • @dcContents (5) Sets or gets the contents of an ITEMBOX, FILELISTBOX, DROPLISTBOX or REPORTVIEW.
  • @dcSelect (6) Sets or gets the selected items in an ITEMBOX, FILELISTBOX, DROPLISTBOX or REPORTVIEW.
  • @dcDate (7) Sets or gets the date value of a CALENDAR.
  • @dcSpin (8) Sets or gets the current numeric value of a SPINNER.
  • @dcTabStop (9) Sets the fixed tab stops of a MULTILINEBOX.
  • @dcScroll (10) Sets or gets the visible item of an ITEMBOX, FILELISTBOX, MULTILINEBOX or REPORTVIEW (Set only.)
  • @dcBackColor (11) Sets or gets the background color of ANY CONTROL (Except CALENDAR, MENUBAR, MENUITEM, PICTURE and PICTUREBUTTON.)
  • @dcBitmap (12) Sets or gets the bitmap of a PICTURE or PICTUREBUTTON.
  • @dcTextColor (13) Sets or gets the text color of ANY CONTROL (Except CALENDAR, MENUBAR, MENUITEM, PICTURE and PICTUREBUTTON.)
  • @dcAddItem (14) Sets an item in a ITEMBOX,FILELISTBOX,DROPLISTBOX or REPORTVIEW.
  • @dcRemItem (15) Removes an item (using DialogControlSet) from a ITEMBOX,FILELISTBOX,DROPLISTBOX or REPORTVIEW.
  • @dcGroupDot (16) Gets the control with the dot in a RADIOBUTTON group.
  • @dcPosition (17) Sets or Gets a controls origin and size in dialog units for ALL CONTROLS (Except MENUBAR and MENUITEM.)
  • @dcMenuNames (18) Gets the names of menu items of ANY CONTROL.
  • @dchWnd (19) Gets the system windows handle of ANY CONTROL (Except MENUBAR and MENUITEM.)
  • @dcHeaderText (20) Sets or gets the column header text of a REPORTVIEW.
  • @dcColWidth (21) Sets or gets the column width of a REPORTVIEW
  • @dcAppendCol (22) Appends a column (using DialogControlSet) to the right side of a REPORTVIEW
  • @dcRemoveCol (23) Removes a column (using DialogControlSet) from a REPORTVIEW
  • @dcFind (24) Gets all rows with first column text that matches search text. Use on a REPORTVIEW
  • @dcCancelEdit (25) Cancels (using DialogControlSet) a user edit of the text in the first colum of a REPORTVIEW
  • @dcGetChecked (26) Returns all checked rows (using DialogControlGet) of a REPORTVIEW
  • @dcColFormat (27) Sets or gets the column format (0=left, 1=center, 2=right) of a REPORTVIEW
  • DialogObject Constants
  • @doAddEvent (1) Call dialog callback when the specified COMCONTROL event occurs.
  • @doRemEvent (2) Stop calling dialog callback when a previously requested COMCONTROL event occurs.
  • @doGetObject (3) Return an object references to the specified COMCONTROL control.
  • @doGetPicture (4) Creates and returns an object reference to a picture object.
  • Dialog Callback Procedure Return Code Constants
  • @retCancel (0) Cancels dialog.
  • @retDefault (-1) Continue with default processing for control.
  • @retNoExit (-2) Do not exit the dialog.
  • Modified the 'Dialog' function to accept vertical bar (|) delimited style constants instead of numbers in
  • the control style attributes of dialog templates. Numbers can still be used to indicate a control's style.
  • Dialog Editor
  • Fixed problem that caused hard crash when the editor received a mouse click notification in its window
  • client area outside of the dialog template and the displayed template has multiple controls selected.
  • Added the new 'Use Constants' option to the 'Save' property page of the 'Options' dialog. When checked
  • (the default), Dialog Editor will use vertical bar (|) delimited style constants instead of numbers
  • in controls style attribute of dialog templates.
  • WinBatch Studio
  • Modified Dialog Callback Procedure generator to use the new WIL dialog related constants when creating
  • the procedure and related documentation. Also changed the callback generator to use WinBatch Studio user
  • specified tab preferences when formatting lines. Also fixed several minor generator formating problems.
  • Added new context menu item to the 'Code Block' popup menu item called 'Convert Dialog Callback Constants'.
  • When selected, the menu item converts all instances of old style dialog constants to the new intrinsic dialog
  • related constants in the currently viewed document. It also adds a comment character to the beginning of any
  • line that assigns a value to one of the known variable based constants.
  • Keyword Lookup (Shift+{F1}) now synchronizes the help viewer Contents and Index tabs to the targeted keyword on
  • successful lookups.
  • Added new 'Find All' button to the 'Find...' menu item's dialog box. Pressing the 'Find All' button will cause
  • WinBatch Studio to search for all instances of the supplied search term in the current document. The search
  • results are displayed in the Find Results tabbed window near the bottom of the WinBatch Studio's application
  • frame window. The 'Find All' search can also be started by selecting the new 'Find All' menu item of the
  • right-click context menu

New in WinBatch 2014B (Aug 4, 2015)

  • DLL 6.14bnb First showing up in WB 2014B
  • Made several performance related enhancements to the Windows Interface Language parser.
  • Modified the 64-bit version of the FileMenu to use the 64-bit version of the WIL interpreter instead of the 32-bit
  • interpreter. This change improves performance and stability on 64-bit versions of Windows.
  • Fixed a defect in ArrayItemize function that cause it to return an empty item list when the first array element was
  • an empty string even though the array had additional elements.
  • The 'FileAppend' function now writes system error information to the wwwbatch.ini file when the function fails for
  • an otherwise unknown reason.
  • Modified the setup program to reduce the occurrence of automatic reboots when performing silent installs.
  • NOTE: This change does not remove the need to manually reboot the system to insure that the installation is completed.
  • New Functions
  • IntControl(97,0,0,0,0)
  • This IntControl frees all resource associated with all Dll Structure handles created by one or more calls to the
  • 'DllStructAlloc' function. All Dll Structure handles are invalid after using this IntControl.
  • The IntControl returns the number of Dll Structure handles destroyed.
  • IntControl(98,p1,p2,0,0)
  • Use this IntControl obtain information about a DLL structure handle.
  • p1 a valid DLL structure handle returned by a call to the DllStructAlloc function.
  • p2 determines the type of information returned by the IntControl.
  • 1 = return the size in bytes of a structure represented by the DLL structure handle.
  • 2 = return the memory address of the buffer holding the C-language structure represented by the DLL structure handle.
  • DllStructAlloc(s:member-descriptor[, i:memory-address])
  • Create a Dll Structure handle to an entry in the WIL Structure descriptor table.
  • The returned handle can be used with DllCall or DllCallcdecl when calling an external DLL entry point that
  • requires the memory address of a C/C++ language style structure as a parameter. The handle can be used to both pass
  • information to or retrieve information from the DLL entry point depending on the entry point's implementation.
  • The member descriptor string parameter must contain the string representation of the C/C++ language structure to create.
  • Each member of the structure must have both a supported data type specifier and a name. The data type specifier
  • can be any data type from the list below. The member name can be any text excluding tab (@tab), space (" "), colons (:),
  • or semicolons (;). Each data type/member pair can be separated by white space or semicolons. The member data types must
  • be compatible with the documented data types for the DLL structure. Each structure member descriptor must be listed in
  • the order indicated by the external DLL's documentation or 'header' file. Use the '[elements]' qualifier to indicate that
  • a member is an array. The opening square bracket ([) must immediately follow the name with no intervening white space and
  • 'elements' must be an integer indicating the number elements in the array.
  • When used, the optional second parameter must be a structure memory address returned by an external DLL entry point.
  • The function copies the contents of the supplied memory location into memory allocated for the structure described by
  • the first parameter. This parameter is only necessary when an entry point returns a memory address to a structure or
  • has an out parameter that is a pointer to a pointer to a structure.
  • Use the returned DLL structure handle with DllCall or DllCallcdecl by passing the handle to the external function with
  • the new 'lpstruct' parameter type specifier. The structure descriptor table shares resources with binary buffers so a
  • combined maximum of 128 binary buffer and DLL structure handles can be active at one time.
  • "member-descriptor" Tab or space character delimited list of data type*:name pairs of structure members. Data type and
  • name must be separated by a colon (:) character.
  • "memory-address" DLL entry point supplied memory address to a DLL structure.
  • Note: the function assumes standard Windows 8 byte structure alignment.
  • *Supported data type string include: atom, byte, bool, boolean, char, colorref, dword, dwordlong, dword_ptr, double,
  • float, handle, hbitmap, hbrush, hmenu, hcursor, hdesk, hfile, hfont, hglobal, hicon, hiinstance, hkey, hmodule, hmonitor,
  • hpen, hrgn, hwnd, hresult, int, int_ptr, int64, long, lptr, long_ptr, lparam, long64, lpstr, lpwstr, short, uchar,
  • unsigned char, ushort, uint, ulong, unsigned long, unsigned int, word, wchar, wparam, wndproc.
  • DllStructPeek(i:structure-handle, s:member-name)
  • Retrieves the value of a member of a DLL structure represented by a structure table handle. Usually, call the function
  • after the structure handle has been passed as a parameter during a DLL entry point call to retrieve data suppled by the
  • DLL entry point. The structure-handle parameter must be a value returned by the DLLStructAlloc function and the
  • member-name parameter must be one of the structure member names supplied in the member descriptor string used to
  • create the handle.
  • The function returns a string when the member data type is 'lpstr' or 'lpwstr' and an array when array syntax is
  • used on the member name in the descriptor string. A string of decimal digits (a huge number) is returned for most
  • 8 byte integer data types and a floating point number is returned for the 'double' and 'float' data types. Most other
  • data types are represented by an integer return value.
  • "structure-handle" Dll Structure handle returned by the DllStructAlloc function.
  • "member-Name" Structure member name from the structure descriptor string used to create the 'structure-handle'
  • parameter.
  • DllStructPoke(i:structure-handle, s:member-name, s/i/a:member-value)
  • Set the value of a member of a DLL structure represented by a structure table handle.
  • The structure-handle parameter must be a handle supplied by the DllStructAlloc function and the member-name
  • parameter must be one of the structure member names from member descriptor string used to create the handle.
  • Call the function before passing a DLL structure to a DLL entry point when the entry point is using a structure
  • to obtain information from the caller.
  • The function attempts to convert the member-value parameter to the data type of the member indicated in the
  • structure descriptor string. However, the value must be an array for array structure members.
  • The function returns 1 (@True) on success.
  • "structure-handle" Dll struct table handle return by the DllStructAlloc function.
  • "member-Name" Structure member name from the structure descriptor string used to create the 'structure-handle'
  • parameter.
  • "member-value" New value of the structure member. Must be an array for member with an array data type qualifier.
  • DllStructFree(i:structure-handle)
  • Free all resources associated with a DLL structure handle. The handle is no longer valid after being passed
  • to this function.
  • Returns 1 (@True) on success
  • "structure-handle" Dll struct table handle return by the DllStructAlloc function
  • New Operators
  • The Windows Interface Language now supports eleven new compound assignment operators. Compound assignment operator,
  • like the simple assignment operator, store the value of the second operand in the variable specified by the first
  • operand. However, they also perform an arithmetic, shift, concatenation, or bitwise operation prior to storing the
  • result. The operation is performed on the existing value of the first operand and the results of the operation is
  • then stored as the new value of the first operand.
  • Compound assignment operators with examples, simple assignment equivalents, and descriptions:
  • > y Right Shift with Assignment
  • &= x &= y x = x & y Bitwise And with Assignment
  • |= x |= y x = x | y Bitwise Or with Assignment
  • ^= x ^= y x = x ^ y Bitwise Exclusive Or with Assignment
  • *= x *= y x = x * y Multiplication with Assignment
  • /= x /= y x = x / y Division with Assignment
  • += x += y x = x + y Addition with Assignment
  • -= x -= y x = x - y Subtraction with Assignment
  • := x := y x = x : y String Concatenation with Assignment
  • mod= x mod= y x = x mod y Modulo with Assignment
  • WinBatch Studio
  • Corrected a problem in the 64-bit WinBatch Studio debugger that could cause the DllLoad, DllCallCdecl, and
  • DllCall functions to fail unexpectedly.
  • Fixed several defects that sometimes cause quick help and auto-complete text to be clipped.
  • WIL Dialog Editor
  • Changed handling of left mouse button events so that a left button click on a control that is part of a
  • multiple control selection list will cause the control to be removed from the list. Previously, left clicking
  • on a control caused the multiple selection to be cancelled. This change only applies when the control key is
  • not pressed along with the left mouse button.
  • Added the 'Select All' menu item to the 'Edit' menu. Selecting this menu item will result in the adding of all
  • controls to the multiple selection list.

New in WinBatch 2014A (Aug 4, 2015)

  • DLL 6.14ana First showing up in WB 2014A
  • Modified manifests for all executable files to indicate that Windows 8.1 is a supported OS.
  • Fixed string memory leak in the ArrayLocate, ArraySearch and ArraySort functions that occurred when these functions were used on arrays
  • with floating point number element values.
  • Enabled jump lists for WinBatch Studio and WIL Dialog Editor.
  • Fixed potential heap corruption problem cause by the ArrayRedim, ArrayInsert, and ArrayRemove functions when
  • these functions operated on an array passed as a parameter to a user-defined function or subroutines.
  • Added support for a '/silent' command line option to the 'uninstal' program. When specified, this option causes the 'uninstal'
  • program to perform an unattended uninstall of WinBatch or WinBatch+Compiler.
  • Increased the maximum number of simultaneously loaded extenders from 10 to 32. The total extender constants and functions is
  • increased to 750. Depending on the number of functions and constants defined in each loaded extender, it is still possible to
  • reach the maximum number of extender functions and constants limit before the 32 extender limit is reached. Also note that
  • loading a large number of extenders may degrade script performance.
  • New Function:
  • ArrayItemize(a:array[,s:delimiter])
  • Converts a WIL array or variant safearray into a delimited item list. Each array element is converted to its string
  • representation before being added as an item to the delimited list. Any element that does not have a string
  • representation or does not have any value is ignored. This means that it is possible to have fewer items in the
  • delimited list than elements in the passed in array. It is also possible to have more items in the delimited list
  • than elements in the array because an array element may contain an embedded delimiter. The function's return value
  • is the delimited list representation of the passed in array.
  • 'array' array to convert.
  • 'delimiter' [optional] item list delimiter (defaults to '@Tab'). Must be a single character.
  • ArrayReverse(a:array[,i:dimension])
  • Reverses the order of the elements in a WIL array or a variant safearray in place. This function is primarily intended
  • for use on single dimension arrays but it also accepts multi-dimensional arrays. When the optional dimension parameter is
  • used on a multi-dimensional array the reversal process is performed on blocks of elements within the array. The elements
  • within each block are not reversed relative to each other. For example, this feature can be used to reverse the perceived
  • order of the columns in a two dimension array without changing the order of the elements within each column. The function
  • always returns 1.
  • 'array' array to reverse.
  • 'dimension' [optional] array dimension to reverse or zero(0) (defaults to 0.) Valid values are 1 to the number of
  • dimensions in the passed in array or 0 to reverse the array without regard to dimension.
  • WinBatch Studio Changes
  • Added a new "Quick Help" menu item to the "Edit" menu. The "Quick Help" menu includes two sub-menu items.
  • The first menu item "Insert parameters" inserts the parameters for function to left of the caret. This menu item takes over the
  • role previously performed by the "Insert parameters" context menu item. Like the context menu version the new menu item can be
  • invoked using the F12. The new menu implementation is more responsive and reliable than the context menu version.
  • The second menu item "Auto complete" displays a list of WIL and WinBatch functions that match a partially typed word to
  • the left the insertion caret. When a listed function name is selected and the Enter key is pressed or a function name is
  • double-clicked, the partially typed work is replaced with the full function name. This functionality can also be invoked
  • using the Alt+Right Arrow key combination.
  • Added a new "Display syntax sensitive quick help" option to the "File types" tab of the "Options" dialog for "WIL" files.
  • When this option is checked and the mouse cursor hovers over a WIL or WinBatch function name, the editor displays a popup
  • window with the function syntax and description. This option also enables the display of a window containing a function
  • parameters whenever an opening parenthesis is typed immediately after a WIL or WinBatch function.
  • WinBatch Studio "Find in Files" searches can now be interrupted during the file search. To halt a search relaunch the
  • "Find in Files" dialog from the Search dropdown menu on the main menu bar and then clicking the "Stop Find" button or
  • pressing the return key. The "Stop Find" button text will change back to "Find" once the search is halted.

New in WinBatch 2013C (Aug 4, 2015)

  • DLL 6.13cmc First showing up in WB 2013C
  • Fixed string memory leaks in 6.2 WIL Dialogs with a user-defined callback procedures or functions.
  • Modified the WinBatch 32 bit and 64 bit compilers to workaround a problem that intermittently prevented the compilers
  • from writing options and version information to compiled script executables on Windows 7.
  • Modified error handling to reduce the occurrences of the generic CLR "Exception has been thrown..." error in the
  • "More Error Info" error display by suppling more specific error information when that information is made available
  • by the error's source object instance.
  • Fixed memory leak that sometimes occurred when using a 'callback' parameter type with the DllCall function.
  • WinBatch Studio Changes
  • Made several general reliability and stability fixes to WinBatch Studio's external tool functionality.
  • Removed WinBatch Studio's dependence on the Wbml.exe program to start WinBatch scripts as a external process.
  • Modified WinBatch Studio's Run command to allow WinBatch scripts with the '.wbt_if' file extension to start from the
  • Run command with medium integrity and restricted access token on Windows 8/8.1/2012. This modification allows the Run
  • command to duplicate the security level of WIL scripts with the '.wbt_if' file extension when started directly from
  • the Windows shell on Windows 8/2012 and newer versions of the OS. All other WinBatch registered script file extensions
  • receive the higher of either the manifest controlled security level associated with the file extension or the current
  • security level of WinBatch Studio on Windows 8 and newer. This change does not effect Windows 7/2008 R2 and older as
  • the Run command still duplicates the security level the script would receive when started from the Windows desktop shell.
  • Fixed a problem that under certain conditions resulted in incorrect WinBatch Studio default registry settings being applied
  • when installing WinBatch over an existing installation.

New in WinBatch 2013B (Aug 4, 2015)

  • DLL 6.13bmb First showing up in WB 2013B
  • Modifed the ShellExecute, RunShell, RunEnviron, and RunWithLogon functions
  • to accept the new constant @NOACTIVATE in the functions' "display mode"
  • parameter. The @NOACTIVATE value causes the targeted application's window
  • to be displayed in its most recent size and position but without making the application's
  • window the active windows when another top-level window is already active.
  • The ObjectType function will now convert a "NULL" (VT_NULL) variant to a
  • null "BSTR" (VT_BSTR). "NULL" variants are now also converted to null "BSTR"
  • variants when assigned to an element of a SafeArrays of type "BSTR".
  • Added auto-detect ability to safearrays passed as parameters to dotNet class
  • methods and constructors. This reduces the need to use either the 'ObjectClrType'
  • function or the colon (:) type indicator on array parameters.
  • WinBatch Studio
  • Fixed problem in the WinBatch Studio 64-bit debugger that caused the 'Version'
  • function to report an empty string instead of the current WinBatch Studio version string.
  • Modified how the WinBatch Studio 32-bit and 64-bit debuggers load and unload
  • the Common Language Runtime so that scripts exhibit the same behavior when
  • executed more than once in the same debugging session.
  • Fixed a 32-bit and 64-bit debugger problem that caused an intermittent memory
  • access violation when debugging scripts that load the CLR.
  • Changed status bar to display a user tool's menu text when the mouse cursor hovers
  • over the associated user tool button.
  • Dialog Editor
  • Fixed problem in Dialog Editor that prevented the menu editor from always
  • detecting and preserving menu item position changes.

New in WinBatch 2013A (Aug 4, 2015)

  • DLL 6.13ama First showing up in WB 2013A
  • Fixed defect in the 'RegQueryMulSz' function that caused it to not include the
  • last character of the last item in the returned list of registry values.
  • Modified the 64-bit version of the 'RegOpenFlags' function to return 2 (64-bit view)
  • instead of 0 on the first call to the function.
  • Added the "UNKNOWN" variant type to the 'ObjectType' function. The variant type
  • parameter value can only be used with the value 0 in the function's second
  • parameter to create a NULL VT_UNKNOWN variant.
  • The 'ObjectType' function now converts WIL arrays and binary buffers to
  • variant safearrays of a specific type. Request conversion by prepending "ARRAY|"
  • to the variant element type in the first parameter. The function's second parameter
  • should contain a WIL array, a Variant safearray or a binary buffer when using the "ARRAY|"
  • specification. The special type specification "ARRAY|VARIANT" can be used to convert
  • WIL arrays already containing multiple variant types into a safearrays of type VARIANT.
  • New Functions
  • The following three new functions give WinBatch scripts access to the Microsoft .Net Framework.
  • WinBatch makes this possible by hosting the common language runtime (CLR) and exposing
  • functionality for creating and accessing the members of classes, structures and enumerations
  • of managed code assemblies (DLLs) that are part of or based on the Framework.
  • The WinBatch CLR hosting environment works by wrapping Framework based classes, structures
  • and enumerations in light weight COM Automation objects to take advantage of the WinBatch
  • interpreter's existing understanding of COM syntax and semantics. This approach lessens
  • the challenge of using managed objects in WinBatch script for those already familiar with
  • COM Automation. However, it is still recommended that you have a basic understanding of
  • object oriented programming concepts as used by the Framework. It is also important to
  • carefully read and understand the documentation for a Framework based type before using
  • it in a WinBatch script.
  • WinBatch access to the Framework uses COM but it is not completely dependent on the
  • Framework's COM interop. This is because the WinBatch directly hosts the CLR. The
  • hybrid approach offers significant advantages over a COM interop only implementation.
  • First, assemblies do not need to be registered in the Windows registry to be accessed.
  • Second, whole classes, class methods and class properties do not need to be attributed
  • as COM visible to be accessed through WinBatch. Third, WinBatch CLR hosting is not tied
  • to a specific Framework Class Library (FCL) or CLR version. WinBatch only requires that
  • the Framework be installed on the system.
  • While WinBatch CLR hosting has many advantages, this version has limitations that should
  • be considered before deciding whether or not to implement a solution using Framework
  • based assemblies. The following is a partial listing of those limitations:
  • - Delegates and event callbacks are not supported. (This limits the effectiveness of UI related classes.)
  • - Generics can only be used when pre-instantiated with appropriate type parameters by another CLR object.
  • - Remote access to an assembly running in another process is not supported.
  • - WinBatch scripts cannot be compiled into CLR applications or assemblies.
  • ObjectClrNew(s:typename [, u/s/i/f/v:ctorparm,...] )
  • Creates a class, structure or enumeration implemented by a managed assembly. The function returns
  • a Framework based type as a COM Automation reference that can be used to access the members of the
  • underlying Framework based type. The assembly implementing the type specified by 'typename' must
  • be loaded into the WinBatch process before this function can be called to create the type. The
  • exceptions to this requirement are types implemented by the "mscorlib" assembly. This assembly
  • is automatically loaded by WinBatch when the CLR is loaded. All other assemblies must be loaded
  • into the WinBatch process using the 'ObjectClrOption' function's 'use' option.
  • "Typename" The name of a Framework based class, structure or enumeration. The name must be
  • fully qualified by including the dot (.) separated namespace prefixed to the type's
  • immediate name. The namespace name and immediate name must also be separated by a dot
  • character. Ctorparm, etc. - 0 to 15 constructor parameters to be used when creating a type.
  • Since type constructors can be overloaded, the type and number of these parameters control
  • which constructor will be used to create the type.
  • Members of the returned object reference are call using the same variable-name+dot+member-name syntax
  • used by standard COM Automation object references. However, there are some important differences between
  • regular COM calls and CLR type member calls.
  • The most significant difference is that CLR constructors and type member names can be overloaded. This means
  • that more than one member can have the same name. When more than one member has the same name, WinBatch
  • and the CLR determine which member to call based on the number and type of the parameters passed in the call
  • statement. The combination of member name, parameter types and parameter count is called the member's signature.
  • This means that using the correct type for each parameter is crucial to calling the correct member.
  • Both member overloading and the fact that WinBatch cannot query the object for type information before making
  • a member call as it does with regular COM Automation references means that the colon (:) type qualifier needs
  • to be used more frequently on CLR object member parameters. Fortunately, WinBatch will take standard variant
  • type names like BSTR, UI8, BOOLEAN, R8, e.g., and convert them to equivalent Framework types automatically.
  • It will also automatically deduce the correct Framework type for variant variables passed as parameters to
  • a member without needing to specify a type with the colon qualifier. When a Framework based type does not
  • have equivalent variant type, the fully qualified Framework based type name can be used with colon type
  • qualifier on a parameter. This is most often necessary when the object member is expecting an up-cast or
  • down-cast of Framework based class, when it is expecting a value from a Framework based enumeration, or when
  • it is expecting an array with elements of a specific Framework based type. In the case of arrays, the type
  • qualifier should be the Framework based type of the elements prefixed to the variable name of a variable that
  • holds either a WIL array or a variant safearray. No array type information ('ARRAY' or 'System.Array') should
  • be included in the type qualifier. When using a Framework type name qualifier with any parameter the type
  • qualifier's assembly must be loaded before the member with the qualified parameter is called.
  • Another significant difference between standard COM Automation object and Framework based wrapped objects
  • is that unlike standard COM Automation objects, Framework based object member names are case sensitive.
  • The function allows access to most Framework based types and there members but there are a few limitations
  • and restrictions. The following is a partial list of those limitations and restrictions:
  • - WinBatch relies on the CLR hosting's reflection functionality to instantiate classes. There are a
  • few classes attributed to block instantiation via reflection.
  • - WinBatch does not support out parameters. Method without parameters can still be called but out
  • parameter values are not modified on the method's return.
  • - Class member overloads that rely solely on the return type and name for their signature cannot be used.
  • - Value types (structures) that only provide a multiple parameter constructor(s) cannot be used.
  • - A small number of type member names conflict with WinBatch identifier naming rules and cannot be called
  • directly.
  • - Parameterize properties are not supported.
  • ObjectClrOption(s:option-name, s:option-value )
  • Sets CLR configuration options before the CRL is loaded and loads an assembly into the current
  • WinBatch process. The function returns @True on success.
  • "Option-name" Available options are "version", "appbase", or "use". See below for details.
  • "Option-value" Can be a CLR version string, file system path, or assembly name depending on the
  • option-name.
  • The Option-name parameter values meaning and usage:
  • "version" Use this option to instruct WinBatch to load a specific version of the CLR. The
  • option-value parameter string must start with the character "v" followed by the first three
  • parts of the version number. Currently, Microsoft provides the following CLR versions "v1.0.3705",
  • "v1.1.4322","v2.0.50727" and "v4.0.30319". The option must be set before the first call to this
  • function with the "use" option or before the first call to the 'ObjectClrNew' function. If the
  • "version" option is not used before the CLR is loaded, WinBatch will attempt to load the current
  • system's latest installed version of the CLR.
  • "appbase" The option-value parameter for this option is used to indicate the full file system path that
  • presents the location of assemblies you plan on using in your script that are not installed
  • into the global assembly cache (GAC) of the system running the script. This option must be set
  • before the first call to this function setting a "use" option or before the first call to the
  • 'ObjectClrNew' function.
  • "use" This option is used to load assemblies into the WinBatch process. Assemblies must be loaded
  • before the types the assembly implements can be used. The option-value parameter for the is
  • option must be a string variable or literal containing an assembly name. If an assembly is
  • stored in the GAC, it is generally necessary to use the fully qualified assembly name. The
  • fully qualified assembly name has the format "assembly's name, version=x.x.x.x, culture=xxxx,
  • PublickeyToken=xxxxxxxxxxxxxxxx". For example, the fully qualified name of the "System.Data"
  • assembly is "System.Data, version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".
  • Full assembly names can be found by using the Mscorcfg.msc tool, by view the global assembly
  • cache directory directly, or by using the Gacutil.exe tool.
  • ObjectClrType(s:typename, u/s/i/f/v:value-reference )
  • Use this function to either associate a Framework based type name with a value, or to up-cast or
  • down-cast Framework based object references. If the second parameter is a simple string, integer,
  • float, variant that is not a reference to a Framework based object, the returned reference can only
  • be used as a parameter to a Framework based object method call, as the right-hand side of a Framework
  • based object property assignment or a constructor argument in a call to 'ObjectClrNew'. In other
  • words, the returned reference does not have user callable methods, properties or fields. On the other
  • hand, if the second parameter is a reference to a Framework based object and the first parameter is
  • the typename of a base or derived type of that object then the returned reference can be used to
  • access the members of either the base or derived type of the input object.
  • "Typename" The name of a Framework based class, structure or enumeration. The name must be fully
  • qualified by including the dot (.) separated namespace prefixed to the type's immediate
  • name. The namespace name and immediate name must also be separated by a dot character.
  • "Value-reference" A value or Framework based object reference to associate with Typename.
  • If the second parameter does not contain a Framework based object reference, the assembly implementing
  • typename must be loaded before the return reference is used as a method parameter, property value or
  • constructor argument. If the second parameter contains a Framework based object reference, the assembly
  • implementing typename must be loaded before this function is called.
  • Fixed several problems with the MousePlay function incorrectly locating the mouse cursor on multi-monitor
  • systems when using a window origin instead of a screen origin. Also fixed problems that caused the function
  • to use an invalid origin instead of the origin of the restored parent window when the parent windows was
  • minimized and a child window was specified. These are breaking change that may require changing existing
  • scripts that use the function.
  • Modified the legacy WinMacro application to reflect the multi-monitor fix in the MousePlay function.
  • This may require rerecording macros that were recorded using mouse coordinates relative to a specific
  • window instead of to the screen.
  • Dialog Editor
  • Changed General property page's control name verifications to prevent case only name changes from
  • generating a duplicate name error.
  • Editor no longer clears the undo list when a dialog template is saved.
  • WinBatch Studio Changes
  • Fixed Print Preview memory corruption problem in WinBatch Studio.

New in WinBatch 2012C (Aug 4, 2015)

  • DLL 6.12clc First showing up in WB 2012C
  • Minor changes to the WinBatch and WinBatch+Compiler setup program to accommodate
  • installation of shortcuts to the Windows 8 start screen.
  • Added workaround for a bug in Windows 8 that prevented the 'WindowOnTop' and
  • 'WinActivate' functions from working properly.
  • Refreshed the icons for many installation executables.
  • Made minor improvements to the capture of additional error information generated
  • by COM server dlls and executables.
  • Fixed problem caused by specifying a dialog MENUITEM with the DEFAULT keyword
  • as the MENUITEM's text attribute.
  • Fixed problem with resizeable dialogs that occasionally caused the dialog to be
  • resized when restored from the shell taskbar.
  • Added new 268435456 (Include Header Text) style to dialog REPORTVIEW controls.
  • When this style is set, the REPORTVIEW control column header text is added as
  • the first row of the array returned from an item search request, a selected
  • or checked item request, or a request for all items of the control. This style
  • will also cause the control's associated variable to contain the column header
  • text as the first row of the array referenced by the variable. The style can be
  • used in a control's dialog template entry and as a parameter to the DialogControlState
  • function's remove and add style request codes.

New in WinBatch 2012B (Aug 4, 2015)

  • DLL 6.12blb First showing up in WB 2012B
  • Modified the ObjectCreate function to interpret a blank string in the second parameter to
  • indicate that the object should be created using the local machine as the object server.
  • WinBatch is no longer dependent on the msvfw32.dll at run time. This allows the interpreter
  • and compiled scripts to execute on Server Core for Windows 2008 installations that do not
  • have this system dll installed by default. Note that WIL dialog boxes will not be able to
  • display bitmaps in PICTURE or PICTUREBUTTTON controls, nor will they display dialog background
  • bitmap on systems without the dll. This change does not affect all other versions of Windows
  • and Windows Server, including Windows 2008, because these systems have msvfw32.dll installed.
  • Changed the order of the WinBatch interpreter's shutdown sequence to workaround a thread
  • deadlock problem in Windows 7 32-bit COM Automation system unloading.
  • Fixed problem with the file size displayed for files larger than 2GB in overwrite warning
  • dialogs.
  • Fixed a problem that could cause a variable containing an array to become corrupted when
  • the variable was created in a Called script, UDF or UDS that was not exited via a
  • 'Return' statement.
  • Modified the DllCall and DllCallCdecl functions to also accept ordinal entry points.
  • Changed the Terminate function to display Unicode strings without conversion to their
  • ANSI equivalents.
  • Changes to the Dialog function and related functions:
  • Added the new REPORTVIEW control. The Reportview control is a ListView common control with the
  • 'report' Windows style. It can be used as either a simple grid control when a full featured
  • grid control is not needed or as an advanced version of the WIL dialog ITEMBOX control.
  • The REPORTVIEW control supports all dialog template control definition attributes with the
  • following control specific meanings:
  • var - The name of a variable that receives an array of user selected rows from the control
  • on a non-canceling exit from the dialog. Optionally, the variable can contain an array of
  • values to display in the control. When the variable is used to populate the control, the
  • control will have a column for each column in the array. The array can optionally contain
  • text for each column heading in the first row of the array. See the style attribute for details.
  • Note that the array variable contents will only be used to populate the control when the 'text'
  • control definition attribute is set to 'DEFAULT'.
  • text - The 'text' can either be set to 'DEFAULT' or set to the path and file name of
  • a CSV file used to populate the control. The file must meet the same CSV file requirements
  • specified for the 'ArrayFileGetCsv' function and the value separator must be a comma(,).
  • The first line of the file can optionally contain column headings. See the style attribute
  • for details.
  • style - The control supports the invisible(1) and disable(2) styles. In addition the control
  • accepts the following new styles:
  • noheader(524288) The header bar is not display across the top of the control.
  • firstheader(1048576) The first row of the source array or file is treated as column header
  • text.
  • gridlines(2097152) The control displays vertical and horizontal lines to form a grid.
  • singleselect(4194304) Only one row can be selected at a time.
  • fullrowselect(8388608) Selection highlighting extends to all subitems in the selected row.
  • sortascending(16777216) The control is populated with rows ordered from lowest to highest
  • first column values. Sorts using an "intuitive" sort (See ArraySort for details); The user
  • can reorder control rows based on any column's values by clicking on the column header.
  • sortdescending(33554432) The control is populated with rows ordered from highest to lowest
  • first column values. Sorts using an "intuitive" sort (See ArraySort for details). The user
  • can reorder control rows based on any column's values by clicking on the column header.
  • Note: if both sortascending and sortdecending are used, sortascending takes precedence.
  • edititem(67108864) The first column text can be edited in place.
  • checkbox(134217728) Enables check boxes for each first column item in the control.
  • Added the following new event codes to the 'DialogProcOptions' function in support of the
  • new REPORTVIEW control:
  • REPORTVIEW Item Select(18) User has selected row in the REPORTVIEW control. The text of
  • the first column of the selected row is passed to the callback UDF/UDS in the callback's
  • fifth parameter.
  • REPORTVIEW Double-Clicked(19) User has used the mouse to double-click a row in the REPORTVIEW
  • control. The text of the first column of the double-clicked row is passed to the callback
  • UDF/UDS in the callback's fifth parameter.
  • REPORTVIEW Checked/Unchecked(20) User has checked or unchecked an item in a REPORTVIEW control
  • with the 'checkbox' style. The text of the checked item is passed to the callback UDF/UDS in
  • the callback's fifth parameter.
  • REPORTVIEW Edited Item Text(21) 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.
  • REPORTVIEW Column Click(22) User has used the mouse to click a column header of a REPORTVIEW
  • control. The one based column number of the clicked column is passed to the callback UDF/UDS
  • in the callback's fifth parameter. The event is fired before the indicated column is sorted
  • so the sort direction can be controlled by setting or changing the sort direction style of the
  • control during the callback. Sorting is effectively cancelled by removing both sorting related
  • styles from the control.
  • Modified the 'DialogControlGet' function to support the new REPORTVIEW control. The function
  • also has a new fourth parameter that is sometimes necessary when the request code is used to
  • query information about a REPORTVIEW control.
  • Existing 'DialogControlGet' request codes that have different requirements or return different
  • results when used with the REPORTVIEW control:
  • 1 Returns 1 if the REPORTVIEW control has the checkbox(134217728) style and the indicated
  • item is checked. The functions optional fourth parameter must be used to indicate the text of
  • the item to test.
  • 5 Returns a one or two dimension array containing the contents of a REPORTVIEW control.
  • 6 Returns a one or two dimension array containing all selected rows of a REPORTVIEW control.
  • New request codes added to support the REPORTVIEW control:
  • 20 Returns a tab delimited list of REPORTVIEW column headings.
  • 21 Returns a space delimited list of the width of each REPORTVIEW column in dialog units.
  • 24 Returns a one or two dimension array containing all REPORTVIEW rows which have first
  • column text matching one of the items specified as a tab delimited list in the functions fourth
  • parameter.
  • 25 Returns 1 if the next user edit of an item will be canceled upon completion. This request
  • code only applies to REPORTVIEW controls with the edititem(67108864) style.
  • 26 Returns a one or two dimension array containing all checked rows of a REPORTVIEW control.
  • This request code is only relevant when a REPORTVIEW control has the checkbox(134217728) style.
  • 27 Returns a space delimited list of format specification for each REPORTVIEW column. The
  • returned values have the following meanings:
  • 0 - left justify text
  • 1 - center justify text
  • 2 - right justify text
  • Request codes 11, 13, 17, 18, 19 also work as expected with the REPORTVIEW control.
  • Modified the 'DialogControlSet' function to work with the new REPORTVIEW control.
  • Existing 'DialogControlSet' request codes that have different parameter or return types when
  • used with the REPORTVIEW control:
  • 1 Checks or unchecks an item in a REPORTVIEW control. Use the function's set-info(fourth)
  • parameter to indicate the first column text of the row to check or uncheck. The text can be
  • a delimited list to indicate which row should be checked or unchecked when multiple rows
  • have the same first column text.
  • 5 Replaces the contents of the REPORTVIEW control The function's fourth parameter must
  • contain either a CSV file path+name, or a one or two dimension array that will be used to
  • replace the existing contents of the control. Supports variant safe arrays.
  • 6 Toggles the selection state of a row in a REPORTVIEW control. Use the function's
  • set-info(fourth) parameter to indicate the first column text of the row to select or unselect.
  • The text can be a delimited list to indicate which row should be selected when multiple rows
  • have the same first column text. Use an empty string to unselect all selected rows of a
  • control. Note that the control automatically unselects a selected row when a new row is
  • selected when the control has the singleselect(4194304) style.
  • 10 Scrolls a REPORTVIEW control row into view. Use the function's set-info(fourth) parameter
  • to indicate the first column text of the row to scroll to.
  • 14 Adds a row to a REPORTVIEW control. The functions function's set-info(fourth) parameter
  • can be an array or delimited list. If the delimited list lacks enough items or the array
  • enough columns the remaining columns of the control will be left empty. If either the list
  • or array has too many items or columns, the extra text will be ignored. If an array parameter
  • contains multiple rows, all array rows will be added to the control. Supports variant
  • safe arrays.
  • 15 Removes a row from a REPORTVIEW control. Use the function's set-info(fourth) parameter
  • to indicate the first column text of the row to remove. The text can be a delimited list
  • to indicate which row to remove when multiple rows have the same first column text.
  • New request codes added to support the REPORTVIEW control:
  • 20 Changes the column headings text of a REPORTVIEW control. Place a tab delimited list
  • of the new column headings, one for each column, in the function's set-info(fourth) parameter.
  • 21 Specify a new width in dialog units for each REPORTVIEW column as a space delimited in
  • the function's set-info(fourth) parameter. Column widths can be set to -1 to cause a column's
  • width to fit the column contents. -2 can be used to set a column's width to match the column's
  • header text. Setting the farthest right column to -2 causes that column to fill the remaining
  • width of the control.
  • 22 Adds a new column to the far right side of a REPORTVIEW control. Indicate the columns
  • header text in the functions set-info (fourth) parameter.
  • 23 Remove a column from a REPORTVIEW control. The function set-info parameter should contain
  • one based number from left to right of the column to remove. Note that column 1, the left most
  • column, cannot be removed from the control.
  • 25 Toggles canceling of a pending or the next edit of a REPORTVIEW control item. The
  • set-info parameter should be @True to turn on edit canceling and @False to turn off canceling.
  • The function returns the previous edit cancel setting.
  • 27 Specify the format for each REPORTVIEW column as a space delimited in the function's
  • set-info parameter. Valid values and there meanings:
  • 0 - left justify text
  • 1 - center justify text
  • 2 - right justify text
  • Request codes 11, 13, 17 also work as expected with the REPORTVIEW control.
  • Note that the above functions apply case insensitive text comparisons when identifying items
  • in a REPORTVIEW control.

New in WinBatch 2012A (Aug 4, 2015)

  • DLL 6.12ala First showing up in WB 2012A
  • Fixed problem in 'RegQueryEx' function that caused an error when the 'subkey-string'
  • parameter was a Unicode string and the 'type' parameter was set to 3.
  • Changed 'ObjectCreate' function's remote server access to error
  • if it is unable to create the object on the remote system instead of first
  • attempting to use a local copy of the targeted object.
  • Fixed problem with "IntControl 73" goto (p1=1) error handling
  • that caused the script lines following :WBERRORHANDLER goto label to be ignored when
  • an error occurred in the expression associated with an "ElseIf" or "Case"
  • statement.
  • Incorporated workaround for bug in Windows Vista and newer Common Dialogs
  • that caused the WinBatch "AskFileName" function to return random
  • characters instead of redisplaying if a user selected to many files
  • when calling the function with multi-selection flag 2.
  • Added an optional third parameter to the "AddExtender" function which can be
  • used to specify a file name for the 64-bit version of an extender. This allows
  • for the specification of both a 32-bit and 64-bit extender in a single system
  • architecture independent call to AddExtender. Specify zero(0) for the second
  • parameter if version checking is not needed and you are using the optional
  • third parameter. Note that 64-bit WinBatch still treats the first parameter
  • as the file name of a 64-bit extender when no third parameter is present.
  • AddExtender(filename, [version[, filename]])
  • "Filename" 32-bit or 64-bit WIL extender Dll filename. Must be 32-bit
  • extender if 3rd parameter is also used
  • "Version" [optional] minimum required extender version number
  • "FileName" [optional] 64-bit WIL extender Dll filename
  • Added an optional parameter to both the "ChrHexToUnicode" and "ChrUnicodeToHex"
  • functions that permits the functions to either convert or create a hex strings
  • with most significant byte first Unicode (UTF-16) character byte pair order.
  • ChrHexToUnicode(hex-string[, flag])
  • "hex-string" a Unicode string in hex format.
  • "flag" [optional] 0 (default), or 1 to reverse the byte order
  • of each "hex-string" byte pair before converting to a Unicode
  • character.
  • ChrUnicodeToHex(Unicode-string [, flag])
  • "Unicode-string" a Unicode string
  • "flag" [optional] 0 (default), or 1 to reverse the order of each
  • character byte pair in "Unicode-string" before adding it
  • to the returned hex string.
  • Added level 10 to the WinVersion function. Level 10 causes WinVersion to
  • return 1 when the current native Windows operating system is 32-bit and
  • 2 when the current native Windows operation system is 64-bit. The value
  • returned is independent of the bitness of the current script's executable.
  • Modified the "Drop" function to accept a single array element as a parameter.
  • This permits setting an element of an array to the undefined
  • state while keeping the array and other elements defined. The function
  • does not support undefining COM Automation safe array elements.
  • The "ObjectType" function was modified to no longer accept WIL array
  • with no elements as the second parameter.
  • Modified 64-bit DllCall function so that it no longer generates an memory
  • access violation when an incorrect binary buffer is passed as a C structure
  • pointer parameters to a called dll entry point on Windows 7 systems.
  • WIL Dialog Editor Changes:
  • Corrected problem that could cause an access violation when an dialog template
  • with an invalid dialog font, text color or background color is loaded from the
  • clipboard.
  • Modified menu editor dialog to show the currently selected menu item in high
  • contrast in the list view control even when the list view control does not
  • have the input focus.
  • Setup Program Changes:
  • No longer starts WinBatch Navigator when the '/silent' command line option is used.
  • WinBatch Studio Changes:
  • Increased the number of characters that can be displayed in the 'Find In Files'
  • window from 64KB to 1MB.
  • The main WinBatch Studio Windows are now disabled when the array and binary buffer
  • variable viewing windows are visible to prevent the user from executing script statements
  • while viewing or editing variable contents. This prevents a potential hard crash.
  • Changed File related dialogs to use shell file dialog look and feel.
  • Added a 64-bit debugger to allow scripts to be tested and debugged in a native 64-bit
  • process using WinBatch Studio's debugger command. A menu option and tool bar button
  • allow toggling between 64-bit and 32-bit debugger modes.
  • Made numerous minor fixes to improve overall performance and reliability.

New in WinBatch 2010a (Jan 28, 2010)

  • Major Release

New in WinBatch 2007c (May 9, 2007)

  • Major release
  • The StrInsert function was added in 2007B. The original implementation was incorrect, and has been changed in 2007C If you used the StrInsert function in 2007B, you will need to revisit the code to adapt it to the now correct version.

New in WinBatch 2006d (Oct 17, 2006)

  • Normal incremental improvements

New in WinBatch 2006c (Jun 7, 2006)

  • Normal incremental improvements