List of Fixes and Improvements
WinBatch versions 5.0H and onwords
Keywords: fixes improvements new releases features
WinBatch version 5.X
WinBatch/WIL DLL fixes. Dates indicate disk drop into manufacturing. Actual
ship is often a week or two later.
5.0H Sept 1, 1994
Initial public release of WinBatch 5.0H
5.0J Sept 10, 1994
Network Extender fixes
5.0K Sept 19, 1994
Fixed "Use Older / Use Newer" swap in Confirm Replace dialog
Fixed problem where \*.* was required on a target directory on
FileCopy/FileMove functions (Oops See 5.0N)
5.0L Sept 26, 1994
Fixed MenuChange function
Added DiskSize function
Added \\machine\share capability to DiskFree and DiskSize functions
WinBatch 32 for Intel PCs available
5.0M Oct 3, 1994
Fixed TimeDiffSecs function
Fixed DDERequest memory leak problem
Started adding this fixes.txt file
5.0N Oct 10 1994
Fixed memory leak on Dialog() function when CTL3DV2 was used.
New n3Logout function in Novell3 extender
Really fixed the \*.* problem. Previous fix only copied
the first file.
Modified the DiskFree, DiskSize, and FileSize functions to
return a floating point answer if the result is larger than
about 2 Gigabytes
Fixed Novell 3 Extenders (DLL10G)
n3Map fixed to work with ODI drivers
n3GetMapped
n3MemberSet
n3MemberDel
5.0P Oct 19 1994
Fixed FileSize for 32bit versions to return the proper answer
Fixed a bug in StrIndex where a @backscan on a one character
string would provide an incorrect answer.
Fixed problem in CopyMove confirm dialog - Cancel works now.
Fixed problem in CopyMove dialog - missing source file error caught before
dialog.
Fixed problem where Dialog function dialog boxes used BUTTON_FACE color
instead of LTGRAY color.
Fixed Novell 4 Extenders (DLL10H)
n4Map (improved)
n4GetMapped
n4MemberSet
n4MemberDel
Novell DLL's updated from the Novell 11/93 release to the 2/94 release
WinBatch 32 for Dec Alpha and MIPS now available.
Actually, its almost pointless to watch the Winbatch version number, as nearly all
the fixes appear in the Dll, which has its own version numbering scheme.
Henceforth, we will be tracking the DLL version number. The WinBatch
VersionDll() function will return the DLL version.
This is already built into the SYSINFO.WBT file.
DLL 2.1ebc Oct 26
First showing up in WinBatch 5.0Q
User pointed out problems in the sin and cos routines. Problem traced to
what appear to be singularity-type problems in the Microsoft runtime
cos and sin routines. The Dll now checks for the bad numbers, and if it is
in the range where the runtime routines fail, it stuffs in an appropriate
answer. Fix installed in the 16 bit version only, as the 32 bit versions
do not seem to have this problem in the runtimes.
Fixed a nit in the dialog editor where, when it was requested to
display a script, would do so in a dialog box with a "(Unlicensed)"
in the title.
Fix a parser problem where an error occurred when the first part
of a variable name matched a function name provided by the calling
exe program. This problem first showed up in using a "Dialog1"
name for a dialog in the Dialog Editor.
Fixed a SendKey to DOS bug where stuff like {UP} did not work when
the NumLock was set. Fixed by turning off NumLock when sending
keystrokes to DOS.
DLL 2.1fbc
Fixed look of Dialog boxes (back to white) when CTL3DV2.DLL is
not installed on system.
Fixed >very insignificant< problem where if a user did an
AddExtender for the same DLL twice (or more) only one instance
of the DLL was freed when the WBT file shut down.
Fixed problem in 32 bit version for Windows'95 where default
directory was not set properly in =C: environment variable.
This problem caused wildcarded filenames to be improperly
resolved into real filenames.
Fixed problem in 16 bit version where DirRemove always
returned a true, whether or not the directory was deleted.
If the directory is not deleted, it now returns a suppressable,
1030 error.
DLL 2.2abf First showing up in WB 5.1A
Because of a data structure change to support more binary
buffers (5 was coded, 10 was documented) the main dll
renamed to WBDBFxxx.dll
Fixed TimeDiffSecs (again). If the first date was smaller
than the second date, the answer could be incorrect.
Fixed a problem in FileAppend where the following code would not
work properly.
FileAppend("AAA.*","BBB.TXT")
The DLL now does better checking.
SendKey slowed down a minor tad to help other applications out.
32Bit versions will try harder to locate the WIL DLL on startup.
The compiler time check of various DLLS has been removed because
of assorted problems. We'll just roll the DLL name instead when
incompatibilities arise. The DLL appears to be extremely stable,
and the bug fixes implemented lately tend to be minor (see above)
A buglet where an ItemInsert on a null string installed a leading
delimiter before the inserted item - leading to a list with two
items, the first being null, and the second being the desired item
- was fixed. When ItemInsert'ing into a null list, no leading
delimiter is stuffed in.
A problem with PlayWaveForm where it was not checking the [Sounds]
section of the WIN.INI file for all possible cases has been fixed.
Fixed a problem with FileCopy/FileMove, where the target was ".."
and it was a root directory.
DirExist now returns TRUE for hidden and system directories. It
also uses an improved method (hopefully) of checking for root
directories and directories with relative paths (eg, "..\TEMP").
Changed FileExist to return a value of '2' if the specified file
exists but is currently open by another application in "read-deny"
mode. Most of the other file manipulation functions (except
FileOpen) will cause a sharing violation if they try to access
such a file.
Fixed problems handling file and directory names containing high
ANSI characters (>127).
Fixed a problem that occurred if, inside a FOR loop, the user
changed the increment variable to a string.
Fixed an intermittent problem with performing comparisons of
negative floating point numbers.
FileFullName now correctly expands "dot" directories
("." and "..") in the path name.
Fixed a problem processing lines such as "Gosub %param1%" inside
conditional structures, when param1 was undefined.
(32-bit version) Fixed some incompatabilities with Windows 95:
FileAppend
FileMove
MsgTextGet
WinActivate (where the specified parent window had a modal
child window displayed -- focus was going to the parent
window instead of to the child window)
Fixed a problem with accessing the DLL if it was located in the
parent directory and ".." was on the path.
FileCopy, FileMove, and FileAppend now check for sufficient free
disk space before performing the requested operation, and return
an error if there is insufficient space, as follows:
NetWare 3 extender 12012 First showing up in WB 5.1A
New functions:
n3ServerList(request)
Returns name of connected server(s)
n3FileAttrGet(filename)
Returns NetWare file attributes
n3FileAttrSet(filename, attribs, mode)
Sets NetWare file attributes
NetWare 4 extender 14007 First showing up in WB 5.1A
Changed functions:
n4memberGet(group, user)
n4memberSet(group, user)
n4memberDel(group, user)
these functions no longer take a 'server' parameter (they change the
groups on all servers)
New functions:
n4ServerList(request)
Returns name of connected servers(s)
n4FileAttrGet(filename)
Returns NetWare file attributes
n4FileAttrSet(filename, attribs, mode)
Sets NetWare file attributes
WB 5.1C April 18, 1995
Fixed problem with compiler and compiled WBT's causing a sharing
violation if the DLL was on a network and not marked read-only.
Fixed problem with compiler and compiled WBT's not finding the DLL
if it was located in the Windows or Windows System directory.
Fixed problem with large compiled WBT's being unable to extract the
WIL DLL when run on a disk >= 4 gigabytes in size.
In WILX.DLL extender -- fixed problem with xDriveReady sometimes
causing a GP fault.
DLL 2.2abg First showing up in WB 5.1C
Added two new string constants: @CR and @LF
Fixed bug in BinaryIndex where it wouldn't find the last character
in the buffer.
WB 5.1D July 18, 1995
WinBatch compiler: for new projects, compiler will use settings (type,
icon, and extenders) from the last project.
DLL 2.2abh First showing up in WB 5.1D
**************************************************************************
IMPORTANT: File delimiters
**************************************************************************
In order to support long file names in Windows NT and Windows 95, which
can contain embedded spaces, we have changed the default file delimiter,
used to delimit lists of files and directories, to a TAB in the 32-bit
version of WIL. In the 16-bit version of WIL, the default delimiter has
not changed, and remains a space.
Note that this is the "default" file delimiter. We have added the ability
to change the file delimiter to a character of your own choosing, using
the new IntControl 29. If you are using the 32-bit version of WIL, and
want to make the file delimiter a space for compatability with existing
scripts, you can place the following line at the beginning of each of your
scripts:
IntControl(29, " ", 0, 0, 0)
Conversely, if you want to standardize on a TAB delimiter, you can use:
IntControl(29, @TAB, 0, 0, 0)
Apostrophes (') and back quotes (`) are no longer treated as special
characters to delimit file names containing spaces. They are now treated
as ordinary characters in a file name.
----------------------------
Functions which are affected
----------------------------
The most important functions affected by this change are:
DirItemize
DiskScan
FileItemize
which now return lists delimited by the current file delimiter character.
The following functions, which take file or directory lists as input
parameters, now expect the lists to be delimited by the current file
delimiter character. However, they now also accept lists delimited with a
TAB or a vertical bar ("|", which may be easier to code in a WIL script):
DirItemize
DirRemove
DiskFree
FileAppend
FileAttrSet
FileCopy
FileDelete
FileItemize
FileMove
FileRename
FileSize
FileTimeSet
FileTimeTouch
Note that DiskFree will continue to accept space-delimited lists as input.
**************************************************************************
New IntControl:
IntControl(29, delimiter, 0, 0, 0)
Changes the default file delimiter.
The first parameter is the new file delimiter you want to use, and must
be a single character. The return value of the function is the previous
file delimiter character. If you specify an empty string ("") as the
first parameter, the function will return the current file delimiter
character but the file delimiter will not be changed.
Added option to WinMetrics: WinMetrics(-4) will return the Windows
platform:
0 = Other
1 = Windows
2 = Windows for Workgroups
3 = Win32s
4 = Windows NT
5 = Windows 95
In StrSub, you can now specify a length of -1, which will extract the rest
of the string.
In TimeWait, you can now specify "00:00:00" for the date, which will wait
for the next occurrence of the specified time (ie, today or tomorrow).
Added support for 3-D Dialog's in Windows NT, if CTL3D32.DLL is present in
the SYSTEM32 directory.
Fixed TimeAdd so that it doesn't trim out leading zeros in each field.
The Wallpaper function now obeys the tile parameter in Windows 95.
Improved handling of colors in Dialog function.
Added 3D effect to radio buttons and checkboxes in Dialog function.
Fixed problem where if an error occurred in a called WBT, control would go
to the "Cancel" label in the calling program.
In Dialog and DialogBox, you can now really use IntControl(4) to allow the
dialog to be closed without selecting a file, even if there is an edit box
associated with a file listbox. If you press a pushbutton after changing
the file mask in an edit box, the listbox will be updated with the new
mask. But if you press a pushbutton without changing the file mask, the
dialog will close (and will return a file name of "NOFILESELECTED").
Fixed problem where string variables were not converted properly to
integers at the beginning of a "For" loop.
Fixed problem where lines that should have been ignored (eg, if they
followed a Break statement) could cause errors if they contained invalid
syntax.
If the second parameter of an IntControl(12) statement is "" or "0", any
previously-set exit message will now be cleared. Also, you can now
specify a message beginning with "0".
Fixed problem processing "If" statements with a blank string to the left
of the equals sign.
Fixed a problem in the 32-bit version where the Dialog function would
return an invalid file name (garbage characters) if no file was selected.
Improved IsKeyDown processing (especially under Windows 95).
Improved Ctrl-Break checking (especially under Windows 95).
Made WinWaitClose steal less processor time in the 32-bit version.
WB 5.1E Aug 3, 1995
In the 32-bit version of WinBatch, it is now possible to run WinBatch
files whose names contain spaces, by delimiting the file name with
double quotes on the WinBatch command line. For example:
WBAT32I "Sample Program.WBT" param1 param2
CallExt now handles file names containing spaces, in 32-bit version.
32-bit version of WinBatch will now run WBT's with file names longer than
64 characters.
INI settings have been moved from WWW-PROD.INI to the registry, under key:
HKEY_LOCAL_MACHINE\SOFTWARE\Wilson WindowWare\Settings\WWW-PROD
DLL 2.2abj First showing up in WB 5.1E
For functions which take a partial window name, you can now specify a
tilde (~) as the first character of the window name, which will match any
window containing the specified string anywhere in its title (ie, not
necessarily at the beginning of the title). For example, "~Notepad" will
match a window title of "(Untitled) - Notepad" and a window title of "My
Notepad Application", as well as a window title of "Notepad - (Untitled)".
This should prove especially useful under Windows 95. A '~' at the end of
the specified window name indicates (as before) that the name must match
the window title through to the end of the title. So, "~Notepad~" will
match a window title of "Notepad" and a window title of "(Untitled) -
Notepad", but will not match a window title of "Notepad - (Untitled)".
New function:
WinIdGet(partial-winname).
Returns a unique "Window ID" (pseudo-handle) for the specified window.
New functions to manipulate Windows 95 shortcut link files (Windows 95 only):
ShortcutEdit(linkname, pathname, params, workdir, showmode)
Modifies the specified shortcut file.
showmode = @NORMAL, @ZOOMED, or @ICON
ShortcutExtra(linkname, description, hotkey, iconpath, iconindex)
Sets additional information for the specified shortcut file.
iconindex = 0=based index of desired icon in "iconpath"
ShortcutInfo(linkname)
Returns information on the specified shortcut file (TAB-delimited):
path, params, workdir, showmode, desc, hotkey, iconpath, iconindex
ShortcutMake(linkname, pathname, params, workdir, showmode)
Creates a shortcut for the specified filename.
showmode = @NORMAL, @ZOOMED, or @ICON
In 32-bit version, Run... commands now support file and directory names
containing spaces.
In 32-bit version, Run... commands no longer support the undocumented
method of running a program with a non-standard extension (eg,
"SSSTARS.SCR") by replacing the period (.) in the file name with an
asterisk (*). However, this is no longer necessary, as the Run...
commands in the 32-bit version can now run such programs directly.
The 32-bit bit version is now able to run Windows 95 shortcut files under
Windows 95, using any of the Run... functions. The "Run" mode specified
in the shortcut file (ie: "Normal window", "Minimized", or "Maximized")
will always be obeyed, any command-line parameters specified in the
shortcut's "Target" field will override any parameters passed by the
Run... function, and a working directory specified in the shortcut's
"Start in" field will override a working directory parameter in RunShell.
New directory attribute functions:
DirAttrGet(dirname)
Gets directory attributes (like FileAttrGet)
DirAttrSet(dir-list, settings)
Sets directory attributes (like FileAttrSet)
FileAttrGet and FileAttrSet now return an error if a directory name is
specified. Use the new DirAttrGet and DirAttrSet instead.
New functions (32-bit version only -- the 16-bit version will just return
the passed file name):
FileNameLong(filename)
Returns the long version of a filename.
FileNameShort(filename)
Returns the short (ie, 8.3) version of a filename.
New IntControl (32-bit, Windows NT only):
IntControl(30, "sourcefile", "destination", 0, 0)
Performs a delayed file move. The file is not actually moved until
the operating system is restarted.
New registry functions (32-bit version only):
RegApp(progname, path)
Creates registration entries for a program under "App Paths".
RegDelValue(handle, subkey-string)
Removes a named value for the specified subkey from the registry.
In 32-bit version, PlayMidi function now support file and directory names
containing spaces.
New function (32-bit version only):
InstallFile(filename, targname, default-targdir, delete-old, flags)
Installs and uncompresses file.
New function (menu-based implementations only):
CurrFilePath()
Returns the full path+filename of the currently-selected file.
Like CurrentFile, but returns a full pathname.
New IntControl (32-bit, Windows 95 only):
IntControl(31, 0, 0, 0, 0)
Returns a tab-delimited list of WinId's for all open Explorer windows.
IntControl(67) and IntControl(68) now work in Windows 95.
DosVersion now returns correct values in Windows 95.
Added new request #'s to WinResources for 32-bit version.
The existing request #'s (0-4) will still work, but are not useful on
32-bit platforms.
It is not possible to determine free system resources in the 32-bit
version.
Fixed problem with Dialog and DialogBox returning "NOFILESELECTED" even
if a file was selected, if IntControl(4) was set.
INI settings have been moved from WWW-PROD.INI to the registry, under key:
HKEY_LOCAL_MACHINE\SOFTWARE\Wilson WindowWare\Settings\WWW-PROD
WinBatch version 95B
WB 95B Sept 7, 1995
New Box functions:
BoxButtonDraw(BoxID, button ID, "text", "rect")
BoxButtonKill(BoxID, button ID)
BoxButtonStat(BoxID, button ID)
BoxCaption(BoxID, caption)
BoxColor(BoxID, "color", wash color)
BoxDataClear(BoxID, "tag")
BoxDataTag(BoxID, "tag")
BoxDestroy(BoxID)
BoxDrawCircle(BoxID, "rect", style)
BoxDrawLine(BoxID, "rect")
BoxDrawRect(BoxID, "rect", style)
BoxDrawText(BoxID, "rect", "text", erase flag, alignment)
BoxesUp("rect", show mode)
BoxMapMode(BoxID, map mode)
BoxNew(BoxID, "rect", style)
BoxPen(BoxID, "color", width)
BoxTextColor(BoxID, "color")
BoxTextFont(BoxID, "name", size, style, family)
BoxUpdates(BoxID, update flag)
The 32-bit WinBatch compiler now allows you to specify an icon for the EXE
being compiled.
DLL 2.2abk First showing up in WB 95B
In the 32-bit version, the Run... functions will look in the registry
under "App Paths" for the location of the specified program, if you do not
specify a path for it.
In the 32-bit version, the Run... functions will look in the registry
under "App Paths" for a "Path" setting for the specified program, and, if
found, will prepend it to the "PATH" environment variable before running
the program.
In the 32-bit version, the following functions now work, but only with
32-bit applications:
AppExist
AppWaitClose
WinExeName
In the 32-bit version, AppExist and AppWaitClose are not able to detect
the existence of 16-bit DOS or Windows applications, and WinExeName will
return the string "(16-bit application)".
BinaryPeekStr, BinaryPokeStr, and BinaryStrCnt now check for (and reject)
negative parameters.
RunWait now gives up some processor time while it's waiting.
New function (32-bit version only):
WinSysInfo()
Returns a tab-delimited list of system configuration information.
This function should be used instead of WinConfig in the 32-bit version.
Additional request #'s for WinMetrics (32-bit version only).
New mouse functions:
MouseClick(click-type, modifiers)
MouseClickBtn(win-name, child-win, button-text)
MouseMove(x, y, win-name, child-win)
Fixed problem where an invalid YmdHms string containing two consecutive
colons could cause a GP Fault.
In the 32-bit version, AppExist and AppWaitClose will now wait several
seconds for the specified application to appear.
Fixed problem in menu-based WIL applications where tabs in menu item
descriptions would be displayed as non-printable "black-box" characters.
Added new request #'s to MouseInfo.
In the 32-bit version, IconReplace now supports 32-bit EXE files. The
replacement icon must be the exact same size as the original icon.
New IntControl:
IntControl(32, address, "data type", 0, 0)
Returns the contents of the memory location specified by "address".
Fixed WinMetrics(-1) with 32-bit graphics cards. It was returning -1 for
these; it now returns 2,147,483,647.
WinBatch version 95C
WB 95C Oct 10, 1995
New function:
BoxButtonWait()
Waits for any button in any box to be pressed.
Fixed problem with WinBatch locking up when minimizing a WinBatch box that
was displaying width-justified text.
DLL 2.2abl First showing up in WB 95C
Fixed problem with DirExist returning @FALSE for a UNC which was a root
directory share on another machine (eg, "\\SERVER\C").
DirMake will now create multi-level directories (eg, "C:\ABC\DEF\GHI").
New functions:
BinaryIndexNc(handle, offset, string, direction)
Like BinaryIndex, but case-insensitive.
WinItemNameId()
Returns a list of top-level window names and their "Window ID's", in
the form:
"window1-name|window1-ID|window2-name|window2-ID|..."
In the 32-bit version, Delay and TimeDelay functions now accept
floating point numbers: eg, Delay(0.5).
New function:
ShellExecute(file-name, params, directory, display mode, operation)
Performs a ShellExecute.
New function (32-bit version only):
RegQueryItem(handle, subkey)
Returns a tab-delimited list of named data items for the specified
subkey.
New IntControl:
IntControl(33, p1, 0, 0, 0)
Controls whether a listbox control in a dialog box allows multiple
items to be selected.
P1 Meaning
-- -------
0 Single selection
1 Multiple selection (default)
Improved registry functions in 32-bit version:
RegSetValue, RegQueryValue, and RegDelValue:
1. SEE NOTE BELOW!! Can now specify a named value of [Default] to
indicate the primary value for the key (shown in the Registry
Editor as "(Default)"); eg:
RegSetValue(mykey, "[Default]", "some data")
(*** The above feature was subsequently removed in version 96C ***)
2. Can now specify a subkey string containing a named value; eg:
RegSetValue(mykey, "MySubKey[MyItem]", "some data"), or,
RegSetValue(mykey, "MySubKey\[MyItem]", "some data")
Fixed WaitForKey in the 32-bit version.
In the 32-bit version, you can now use the Run... functions to "run" data
files (eg, Run("win.ini", "")).
FileItemize and DirItemize now handle names containing spaces.
In 32-bit version, fixed problem with 3D dialogs not being used under
Windows NT.
WinBatch version 95D
WB 95D Nov 1, 1995
Compiler now optimizes WBT's by removing comment lines and whitespace.
OLE automation (ObjectOpen and ObjectClose functions) now supported in
32-bit version.
When a custom icon is specified, the 32-bit compiler now installs it as
the icon that is displayed in the Win95 Explorer window, as well as the
icon that is shown in the task bar.
Fixed a problem with some of the Box functions, where a color or font that
was specified in a definition-type command (such as BoxTextColor) would be
used for an output-type command (such as BoxDrawText) that preceded it in
the command stack, instead of the default color or font being used.
DLL 2.2abl First showing up in WB 95D
New registry functions (32-bit version only):
RegQueryBin(handle, subkey)
Retrieves a binary value from the registry.
RegQueryDword(handle, subkey)
Retrieves a DWORD value from the registry.
RegSetBin(handle, subkey, value)
Sets a binary value in the registry.
RegSetDword(handle, subkey, value)
Sets a DWORD value in the registry.
New date/time functions:
TimeJulToYmd(julian-date)
Converts the specified Julian date value to a date in YmdHms format.
Hms will always be "00:00:00".
TimeSubtract(YmdHms1, YmdHms2)
Subtracts YmdHms2 from YmdHms1.
YmdHms2 can not be larger than YmdHms1.
New IntControl's:
IntControl(34, p1, 0, 0, 0)
Returns the error message string which corresponds to the specified
WIL error.
p1 = error number.
IntControl(35, p1, 0, 0, 0) (32-bit version only)
Adjusts SendKey delay.
p1 = amount of time to delay between each keypress, in milliseconds
(1000 milliseconds = 1 second).
Returns previous delay setting.
The default delay (in the 32-bit version) is 25. Specify a larger
number to slow SendKey down, or a smaller number to speed it up
(0 = no delay).
IntControl(36, p1, p2, 0, 0) (32-bit version only)
Waits until an application is waiting for user input.
p1 = window name associated with application
p2 = timeout, in milliseconds (-1 = no timeout)
In dialog boxes, if you create an EDITBOX field with a variable name that
begins with "PW_", it will be treated as a password field (ie, asterisks
will be echoed instead of the actual characters that the user types).
In dialog boxes, file listboxes now use long file names in the 32-bit
version under Windows 95.
In the DiskScan function, request numbers 8 (CD_ROM) and 16 (RamDisk) are
now supported in the 16-bit version.
In 32-bit version, added 3D effects to dialog listboxes and edit controls
under Windows 95.
SendMenusTo now accepts a Window ID for the window name parameter.
In 32-bit version, fixed a problem using the Run[] commands to launch a
Windows 95 shortcut file.
InstallFile function now supported in 16-bit version.
NetWare 3 extender 12013 First showing up in WB 95D
Fixed a problem with n3GetMapped, if the specified server name was also
the partial name of another server (eg, if you specified "\\SERVER1" and
you also had a server named "\\SERVER10").
n3FileAttrGet and n3FileAttrSet can now be used to get and set directory
attributes.
NetWare 4 extender 14010 First showing up in WB 95D
Fixed n4Detach function; it now does a full detach, and it now returns
@FALSE if it is unable to detach from the monitored connection (ie, from
the primary or login server).
Fixed a problem with n4GetMapped, if the specified server name was also
the partial name of another server (eg, if you specified "\\SERVER1" and
you also had a server named "\\SERVER10").
n4FileAttrGet and n4FileAttrSet can now be used to get and set directory
attributes.
WinBatch version 95E
WB 95E Nov 2, 1995
DLL 2.2abm First showing up in WB 95E
In 16-bit version, fixed a problem with DirMake creating a directory name
containing high ANSI characters (>127).
WinBatch version 96A
WB 96A Jan 1, 1996
WinBatch for PowerPC now available.
New IntControl:
IntControl(1000, p1, 0, 0, 0)
Sets the exit code returned by WinBatch.
Default exit code = 0.
Returns previous value.
Fixed the "Help" button in the WinBatch compiler.
In the BoxColor function, the gradient effect (wash color) now works with
video drivers > 256 colors.
DLL 2.3abm First showing up in WB 96A
New function:
DiskInfo(drive-letter, request#)
Returns information on the specified disk drive.
New IntControl's:
IntControl(37, p1, p2, p3, 0)
Replaces the specified icon in an EXE file.
Note: This IntControl is subject to change in future versions.
IntControl(39, p1, 0, 0, 0)
Sets the file sharing mode for file reads.
This affects the FileOpen("READ") and BinaryRead functions.
Returns previous setting.
IntControl(40, p1, 0, 0, 0)
Sets the file sharing mode for file writes.
New return code for WinMetrics(-3): 4 = PowerPC32
In 32-bit version, fixed a problem using DirName with directory names
containing spaces or commas.
Fixed problem with TimeJulToYmd with years >= 2000.
FileWrite now returns an error if the write failed.
In 16-bit version, fixed problem with DiskScan causing a GP fault on
systems with Stacker compression software installed.
In 32-bit version, the following functions are now a little more
well-behaved in giving up processor time: RunWait (and RunShell with the
"@WAIT" parameter), AppWaitClose, and Delay/TimeDelay.
Fixed a problem with the Dialog function, where if you defined an EDITBOX
control after a FILELISTBOX control, the file listbox would revert to a
filespec of "*.*".
In 32-bit version, fixed a prooblem with the Dialog function, where if you
had a filespec other than "*.*", it would not show subdirectories in the
file list.
In 32-bit version, added some code to the ClipGet and ClipPut functions to
try to avoid "Clipboard owned by another app" error messages.
Fixed problem with TimeWait, when specifying a date of "00:00:00" and a
time that was earlier than the current time.
In 32-bit version, added a 25-millisecond delay between keystrokes sent
using the SendKey function. This can be adjusted using IntControl(35).
Fixed problem with PlayWaveForm in 32-bit version.
Windows 32 extender 10004
netDirDialog no longer returns an error if user presses "Cancel".
Dialog Editor 96A
Fixed the "Help" menu.
WinBatch version 96B
WB 96B Feb 12, 1996
In the 16-bit version, fixed a problem where doing a BoxDestroy
immediately after resizing a box window caused a GPF.
Fixed a resource leak problem with BoxColor when using gradient effects.
DLL 2.3bbm First showing up in WB 96B
New binary functions:
BinaryHashRec(buffer, recsize, keyoffset, keysize, keyval)
Returns a pointer to a record in a binary buffer, using a hashing
algorithm.
BinaryIncr(buffer, offset)
BinaryIncr2(buffer, offset)
BinaryIncr4(buffer, offset)
BinaryIncrFlt(buffer, offset)
These functions are equivalent to doing a BinaryPeek[...],
incrementing the extracted value by 1, and then doing a
BinaryPoke[...] to store the new value.
They return the new value.
BinaryPeek2(buffer, offset)
BinaryPeek4(buffer, offset)
BinaryPeekFlt(buffer, offset)
These functions are like BinaryPeek, but they extract 2, 4, or 8 bytes
(respectively) beginning at "offset"
BinaryPoke2(buffer, offset, value)
BinaryPoke4(buffer, offset, value)
BinaryPokeFlt(buffer, offset, value)
These functions are like BinaryPoke, but they store the specified
"value" in 2, 4, or 8 bytes (respectively) beginning at "offset".
BinarySort(buffer, recsize, keyoffset, keysize, flags)
Sorts records in a binary buffer. The buffer is sorted in place.
Change to BinaryIndex and BinaryIndexNc:
You can now specify a blank string ("") for the "string" parameter, in
which case the function will return the offset of the first non-NULL
character found, starting at "offset".
Fixed BinaryIndexNC
BinaryPoke now correctly returns the previous value, as documented.
In the 32-bit version, KeyToggleSet no longer returns an error (however,
it is still subject to the limitations described in the documentation).
In the 16-bit version, fixed DirAttrSet.
The following string functions:
StrIndex
StrScan
StrSub
no longer return an error for illegal bounds conditions. Instead,
StrIndex/StrScan now return a 0, and StrSub returns a blank string.
WinBatch version 96C
WB 96C Mar 22, 1996
FileMenu now works in Windows NT 4.0.
PopMenu now works in Windows NT 4.0.
Fixed problem where BoxButtonDraw didn't change the text of an existing
button, or of a button which had previously existed but had been removed
with BoxButtonKill.
DLL 2.3cbm First showing up in WB 96C
In 32-bit version, the following functions now work in Windows NT 4.0:
ShortcutEdit
ShortcutExtra
ShortcutInfo
ShortcutMake
In 32-bit version, the Run... functions can now be used to launch shortcut
files in Windows NT 4.0.
In 32-bit version, added 3D effects to Windows NT 4.0.
In 32-bit version, fixed problem with licensing dialog in Windows NT 4.0.
In 32-bit version, the following registry functions:
RegSetValue
RegQueryValue
RegDelValue
no longer treat a named value of [Default] as indicating the primary value
for a key (and, therefore, it is now possible to access a value which is
actually named "Default").
In 32-bit version, fixed problem with international language strings not
being used.
New registry functions (32-bit version only):
RegQueryExpSz(handle, subkey)
Retrieves a REG_EXPAND_SZ value from the registry.
RegQueryMulSz(handle, subkey, delimiter)
Retrieves a REG_MULTI_SZ value from the registry.
RegSetExpSz(handle, subkey, value)
Sets a REG_EXPAND_SZ value in the registry.
RegSetMulSz(handle, subkey, value, delimiter)
Sets a REG_MULTI_SZ value in the registry.
In 32-bit version, fixed problem with RegQuery... functions when there
was a backslash between the subkey string and a named value, eg:
RegQueryValue(mykey, "MySubKey[MyItem]", "some data") -- this worked
RegQueryValue(mykey, "MySubKey\[MyItem]", "some data") -- this didn't
RegQuery, RegQueryBin, and RegSetBin can now handle longer strings (up to
available WIL string space).
In 32-bit version, fixed problem with OLE string parameters.
In 32-bit version, fixed problem with RegQueryBin with certain values.
In 32-bit version, fixed problem with RegSetDword with large values.
Fixed problem with TimeSubtract, where the result could have a day of "00"
(eg, "96:04:00" instead of "96:03:31").
In 16-bit version, fixed WinItemNameId.
Fixed problem with BinaryHashRec crashing if there was only one record in
the buffer.
NetWare 3 extender 12014 First showing up in WB 96C
Fixed n3FileAttrGet and n3FileAttrSet.
n3FileAttrGet and n3FileAttrSet no longer support directories (use new
functions n3DirAttrGet and n3DirAttrSet instead).
New functions:
n3DirAttrGet(dirname)
n3DirAttrSet(dirname, attribs, mode)
n3MapDir(net-path, local-name)
n3MapRoot(net-path, local-name)
With n3Map[..], it is no longer necessary to add a trailing backslash when
mapping to the root of a volume.
New functions:
n3CapturePrt(s:server-name, s:queue-name, i:port-number, s:flags)
Captures a local printer port to a Netware printer queue.
n3CaptureEnd(i:port-number)
Ends a printer capture.
n3GetUserId(s:server-name, s:user-name, i:format)
Returns the object ID corresponding to the specified user name.
n3ChgPassword(s:server-name, s:user-name, s:old-password, s:new-password)
Changes a user's password.
n3GetNetAddr(s:server, i:flags)
Returns the internetwork address of the current workstation.
n3ServerInfo(s:server, i:request)
Returns information on the specified Netware server.
n3UserGroups(s:server, s:username)
Lists groups to which the specified user belongs.
Added new request #4 to n3ServerList:
NetWare 4 extender 14011 First showing up in WB 96C
Fixed n4FileAttrGet and n4FileAttrSet.
n4FileAttrGet and n4FileAttrSet no longer support directories (use new
functions n4DirAttrGet and n4DirAttrSet instead).
New functions:
n4DirAttrGet(dirname)
Same as n4FileAttrGet, but for directory attributes.
n4DirAttrSet(dirname, attribs, mode)
Same as n4FileAttrSet, but for directory attributes.
n4MapDir(net-path, local-name)
Like n4Map, but performs a regular (non-root) map.
n4MapRoot(net-path, local-name)
Identical to n4Map.
With n4Map[..], it is no longer necessary to add a trailing backslash when
mapping to the root of a volume.
New functions:
n4CapturePrt(s:server-name, s:queue-name, i:port-number, s:flags)
Captures a local printer port to a Netware printer queue.
n4CaptureEnd(i:port-number)
Ends a printer capture.
n4GetUserId(s:server-name, s:user-name, i:format)
Returns the object ID corresponding to the specified user name.
n4ChgPassword(s:server-name, s:user-name, s:old-password, s:new-password)
Changes a user's password.
n4GetNetAddr(s:server, i:flags)
Returns the internetwork address of the current workstation.
n4ServerInfo(s:server, i:request)
Returns information on the specified Netware server.
n4UserGroups(s:server, s:username)
Lists groups to which the specified user belongs.
Added new request # to n4ServerList:
4 = all known servers (TAB-delimited list)
Windows 32 extender 10005
netGetCon now accepts printer ports higher than LPT3 (up to LPT9).
WinBatch version 96D
WB 96D June 26, 1996
Fixed problem with PopMenu, when generating a file name based on an
application whose class name contained characters that were not valid file
name characters. PopMenu now strips off such characters when generating
the file name (eg, class name of "Edit:App" becomes "EditApp.mnw").
Fixed problem with PopMenu, where it would occasionally fail to launch the
editor when editing/creating a menu file.
In the 16-bit version, WinBatch now does not try to load CTL3DV2.DLL at
startup unless the DLL is located in the Windows System directory.
Compiler now searches path for extender DLL's, if they are not found in
the compiler directory, when compiling a large EXE.
Fixed problem with FileMenu locking up in some cases if the user rapidly
clicked twice on a menu.
Fixed problem with BoxDrawText with "alignment" = 32 (adjust font), where
sometimes the displayed font was too large.
Added two new alignment flags to BoxDrawText:
64 Right-justify text by adding space between words
128 Clip (truncate) text if it doesn't fit within specified rectangle
In FileMenu, fixed a problem with the status bar descriptions under
Windows NT 4.0.
DLL 2.3dbm First showing up in WB 96D
New functions:
RegEntryType(i:handle, s:subkey)
Returns the type of data for the specified subkey.
In the 16-bit version, the return value will always be 1.
RegQueryEx(i:handle, s:subkey, s:delimiter, i:type)
Retrieves a value from the registry.
In the 16-bit version, "type" must be 1.
RegSetEx(i:handle, s:subkey, s:value, s:delimiter, i:type)
Sets a value in the registry.
FileVerInfo(s:filename, s:language-key, s:resource-string)
Returns a version resource string from a binary file.
WinWaitExist(s:partial-winname, i:timeout)
Waits for a top-level window to exist.
Returns @TRUE if the window appeared; @FALSE if it didn't.
WinWaitChild(s:partial-parent-winname, s:partial-child-winname, i:timeout)
Waits for a child window to exist.
New IntControl's:
IntControl(41, p1, 0, 0, 0)
Controls YmdHms format returned by time functions.
IntControl(42, p1, 0, 0, 0)
Get pointer to a binary buffer.
Fixed problem with RegQueryItem, where only one item was being returned.
In the 16-bit version, fixed a problem with WinMetrics(-4) returning 0
under Windows for Workgroups if a secondary network (such as Netware) was
installed.
FileSize no longer returns an error if a wildcard file mask is specified
which does not match any files; it now returns 0.
All functions which take a YmdHms string as a parameter will now accept a
string in the format "YYYY:MM:DD:HH:MM:SS" (ie, containing a 4-digit year).
Fixed problem with time functions which return a YmdHms string (such as
TimeAdd) with years >= 2000.
Fixed problem with Delay function where the current year was >= 2000.
Changed TimeJulianDay so that it treats 2-digit years in the input string
as falling within the range 1950-2049 (eg, "96:04:01" is April 1, 1996).
This is consistent with the behavior of the other time functions.
Previously, TimeJulianDay was not adjusting the year, so that "96:04:01"
would be treated as April 1, 0096. To retain the old behavior, you can
specify a full 4-digit year (eg, "0096:04:01").
TimeJulianDay now correctly calculates julian dates for leap years that
are evenly divisible by 400 (such as 2000).
AddExtender and DllCall/DllLoad now also look for the specified DLL in the
directory where the WIL Interpreter application is located.
In the 32-bit version, SendKey (and SendKeysTo and SendKeysChild) now
attempt to wait until the active application is ready to accept input
before sending each keystroke. This can be disabled with IntControl 43
(see "DLL 2.3ebm" section, below).
Fixed problem with RegQueryBin truncating long values.
In the 16-bit version, fixed problem with FileAppend where the target was
a UNC.
Fixed memory allocation problem with WinWaitClose.
The 32-bit version can now process batch and menu files which were saved
by Notepad as Unicode text files. It may be able to handle Unicode text
files created with other editors as well, as long as the first character
in the file is a hexadecimal FFFE or FEFF.
In the 32-bit version, the Dialog and DialogBox functions now properly set
the current working directory when the user selects a file from a listbox.
Fixed problem where an error that occurred in a CALL'ed script would not
cancel the calling program.
In the 32-bit version, fixed problem with FileCopy, FileMove, and
FileAppend causing a crash if the specified source file did not exist and
the specified target was a UNC.
When AddExtender fails with an error 3437, it now displays a message box
with some idea of what the problem may be, or with a Windows error code.
NetWare 3 extender 12015 First showing up in WB 96D
Fixed problem with n3ChgPassword.
NOTE: Added "old-password" parameter to n3ChgPassword (changed from 96C).
NetWare 4 extender 14012 First showing up in WB 96D
Fixed problem with n4ChgPassword, when using bindery emulation.
In the 32-bit version, fixed problem with Unicode initialization errors
when using the Netware NT client.
Windows 32 extender 10007 First showing up in WB 96D
New functions:
netResources(s:net-resource, i:scope, i:type, i:usage)
Itemizes network resources.
WinBatch version 96E
WB 96E June 27, 1996
New IntControl:
IntControl(1001, p1, 0, 0, 0) (32-bit only)
Set service process status.
For window class names beginning with "Afx", PopMenu now bases the menu
name upon the application's module name instead of the class name.
DLL 2.3ebm First showing up in WB 96E
New IntControl:
IntControl(43, p1, 0, 0, 0) (32-bit only)
Enable/disable "WaitForInputIdle".
WinBatch version 96F
WB 96F Oct 18, 1996
In BoxTextFont, expanded the "pitch & family" parameter to now be
"pitch & family & character-set":
The character set flags will not override the typeface specified by the
font "name" parameter. If you would rather specify a character set than
a specific typeface, specify a blank string ("") for font "name".
Note: If you wish to use a Kanji (Japanese) font, you must specify the
SHIFTJIS_CHARSET flag (32768).
New IntControls:
IntControl(1002, p1, 0, 0, 0)
Sets icon display state.
IntControl(1003, p1, 0, 0, 0)
Prevents WinBatch icon from being opened.
IntControl(1004, 0, 0, 0, 0)
Returns the file name of the current WinBatch program.
Fixed a problem with BoxButtonWait returning erroneously when the Enter or
Escape key was pressed.
Fixed a problem where FileMenu was getting added twice to the menus of
shortcut files. This occurred if a user removed the "IsShortcut" value
from the "lnkfile" key in the registry.
Fixed a problem with excessive repainting in the Box functions.
The compiler can now be used to compile an encoded or encrypted WBT to an
EXE file.
If you try to compile a source WBT which is already encoded or encrypted
to a target type which is an encoded or encrypted WBT, no processing will
be done on the file and the target will be identical to the source. In
other words, you cannot use the compiler to re-encode or re-encrypt a WBT,
or convert an encoded WBT to an encrypted WBT (or vice versa).
DLL 2.3fbn First showing up in WB 96F
New functions:
FindWindow(s:class-name)
Returns the window title matching a specified class name.
RegConnect(s:computer-name, i:handle) (32-bit only)
Connects to a predefined registry handle on another computer.
RegQueryKeys(i:handle)
Returns a tab-delimited list of subkey names under a specified key.
StrFixLeft(base-string, pad-string, length)
Pads or truncates the left side of a string to a fixed length using bytes.
StrFixCharsL(base-string, pad-string, length)
Pads or truncates the left side of a string to a fixed length using characters.
BinaryOleType(i:bin-handle, i:type, i:reserved-1, i:reserved-2, i:reserved-3)
Specifies how a binary buffer will be used by OLE functions.
DiskVolInfo(root-path, request#) (32-bit only)
Returns information on a file system volume.
Yields(i:count)
Provides time for other windows to do processing.
RegLoadHive(i:handle, s:subkey, s:filename) (32-bit only)
Loads a hive into a registry subkey.
RegUnloadHive(i:handle, s:subkey) (32-bit only)
Unloads a hive from the registry.
StrIndexNc(s:string, s:sub-string, i:start, i:direction)
Searches a string for a sub-string, ignoring case.
New IntControls:
IntControl(44, p1, 0, 0, 0)
Returns the class name for specified window handle.
IntControl(45, p1, 0, 0, 0) (32-bit only)
Enable/disable "SendKey speedup" in DOS programs in Windows NT.
IntControl(46, p1, 0, 0, 0) (32-bit only)
Set window retry timeout.
IntControl(47, p1, 0, 0, 0)
Closes another WinBatch program.
IntControl(48, p1, 0, 0, 0)
Closes a DOS program.
IntControl(49, p1, 0, 0, 0)
Add system menus to popup windows.
IntControl(50, p1, 0, 0, 0)
Controls whether "Go to web page" button is added to error boxes.
IntControl(51, p1, 0, 0, 0) (32-bit only)
Specifies flags for CreateProcess.
Fixed problem with RegDelValue under Windows NT.
In the 32-bit version, fixed problem with Ctrl-Break not working during a
RunWait.
In the 32-bit version, FileCopy can now copy files to COM and LPT ports
(the 16-bit version has always been able to do this).
Increased the maximum number of extender entries from 100 to 200.
In the 32-bit version of FileVerInfo, if you specify a blank string for
"language-key", it will first try to look up the item under the language
key "040904E4" (U.S. English w/ Windows Multilingual character set). If
that fails, it will then try the key "040904B0" (U.S. English w/ Unicode
character set).
FileVerInfo now returns a blank string ("") if the specified item was not
found, instead of returning an error.
Fixed problem passing the number -2147483648 as a string parameter to
functions.
In the 32-bit version, fixed FileExist so that it actually returns a value
of 2 (as documented) if the file is open by another application. It was
returning a 1.
Fixed problem with the Random() function crashing if a negative number was
specified.
Added new request #'s for WinMetrics:
-6 pixels per horizontal dialog unit (rounded to an integer)
-5 pixels per vertical dialog unit (rounded to an integer)
Fixed problem with Debug displaying a return value of 0 for the last
command in a script, if there was more than one blank line at the end of
the script file.
Fixed "Opening parenthesis missing" error when using a variable name such
as 'max_users', where the portion of the variable name which preceded the
underscore (ie, 'max') was the same as the name of a WIL function.
In 32-bit version, fixed problem with Wallpaper() function in Windows NT 4.0.
In 32-bit version, fixed problem with Display() function not timing out in
some unusual cases.
If you do an Exit from a called script, it will now really exit the program
instead of returning to the calling script.
In 32-bit version, you can now specify a blank section name for
IniItemizePvt, but the specified INI file name must be a real file, not
a "virtual" file that has been mapped to the registry.
In 16-bit version, fixed a problem with WinMetrics(-4) returning 0 under
Windows 3.1 if a network (such as Netware) was installed.
In 32-bit version, changed NetInfo:
NetInfo(0) will always return the string "WINNT", regardless of the
operating system. This is consistent with previous behavior.
NetInfo(1) will now depend on the operating system:
Under Windows NT, NetInfo(1) will return a list of installed network
provider ID's, delimited with the standard file delimiter (by default,
a tab).
Fixed problem with Display() function causing a "DlgPointLookup Failure"
if you put the Display() in a loop and held down the spacebar.
In 32-bit version, improved the problem of SendKey (and SendKeysTo and
SendKeysChild) sending keystrokes very slowly to DOS programs in Windows
NT. The speedup seems more noticeable in NT 4.0, although there should
be some improvement in NT 3.51 as well. If this new "SendKey speedup"
mode causes problems, it can be disabled with the new IntControl(45).
Fixed problem with using WaitForKey twice in a row to wait for the same
key, where the second WaitForKey returned immediately and didn't wait.
In 32-bit version, fixed problem with PlayWaveForm not working if a
keyword was specified (eg, "SystemStart") instead of a filename.
In 32-bit version, fixed problem with StrCmp, StrCmpi, and BinarySort,
when comparing or sorting two strings which were the same except for a
hyphen or apostrophe (eg, "coop" and "co-op"). StrCmp and StrCmpi would,
in some cases, return 1 instead of -1 (and vice versa), and BinarySort
would sort the two strings improperly.
In Dialog function, fixed problem with radio buttons having text
descriptions longer than 60 characters always being selected by default.
In 32-bit version, changed the way the Run[..] functions launch data files:
When launching data files, the Run[..] functions now retrieve the
command-line parameters from the registry, as well as the application
name. For example, if the command line associated with .WBT files is:
"C:\Program Files\WinBatch\System\WinBatch.Exe" "%1" %2
(note the quote marks), and you use the WIL function:
Run("Test Script.Wbt", "Alpha Beta")
then the actual command that will be executed is:
"C:\Program Files\WinBatch\System\WinBatch.Exe" "Test Script.Wbt" Alpha
The quote marks from the command line (as specified in the registry) are
preserved. %1 gets replaced with the name of the data file. %2 gets
replaced with the first parameter from the Run function ('Alpha'), if any.
If there were a %3 specified in the command line, it would have been
replaced with the second parameter from the Run function ('Beta'), if any,
but since there was no %3 specified the 'Beta' parameter was stripped off.
If the command line specified in the registry does not contain a %1, the
Run[..] functions assume that the (only) parameter to be passed to the
application is the name of the data file, with quote marks around it.
KeyToggleGet and KeyToggleSet now work properly in the 32-bit version.
Sounds now defaults to @OFF in the 32-bit version.
Fixed a problem sending Alt-key combinations and other extended keystrokes
to a small number of unusual DOS programs, particularly the DOS EDIT.COM.
NetWare 3 extender 12016 First showing up in WB 96F
(Note: the internal version number is mistakenly set as 12015)
New function:
n3CaptureGet(i:port-number)
Returns the name of the print queue associated with a printer capture.
Fixed problem with n3ServerList(request #'s 1 and 2) returning a blank
string or garbage characters in the WWN3Z32I.DLL version.
In the 32-bit version, fixed problem with n3CaptureEnd returning 0 and not
ending the capture.
NetWare 4 extender 14014 First showing up in WB 96F
New functions:
n4CaptureGet(i:port-number)
Returns the name of the print queue associated with a printer capture.
n4ObjectList(s:context, s:parent, s:class, s:mask)
Lists objects in a Directory Services tree.
n4ObjectInfo(s:context, s:object, i:request)
Returns information on the specified object.
n4ObjectProps(s:context, s:object, s:attribute)
Returns properties of the specified object.
n4NameConvert(s:context, s:object, i:format)
Converts an object name to a different format.
In the 32-bit version, fixed problem with n4CaptureEnd returning 0 and not
ending the capture.
Fixed problem with n4MemberGet erroneously returning @FALSE in some cases.
Fixed problem with n4ServerList(4) only returning the names of servers
that were located in the current context.
Windows 32 extender 11000 First showing up in WB 96F
Split the Windows 32 extender (WWNET32I.DLL) into separate extenders for
Windows 95 (WWW9532I.DLL) and Windows NT (WWWNT32I.DLL). The existing
net[..] functions have been renamed to w95[..] and wnt[..], respectively:
Old Windows 32 New Windows 95 New Windows NT
-------------- -------------- --------------
netAddDrive w95AddDrive wntAddDrive
netAddPrinter w95AddPrinter wntAddPrinter
netCancelCon w95CancelCon wntCancelCon
netDirDialog w95DirDialog wntDirDialog
netGetCon w95GetCon wntGetCon
netGetUser w95GetUser wntGetUser
netResources w95Resources wntResources
netVersion w95Version wntVersion
For backwards compatability, we are continuing to distribute an extender
DLL named WWNET32I.DLL which supports the existing net[..] functions.
However, this DLL is a "wrapper" or "shell" which calls the appropriate
platform-specific extender DLL (ie, WWW9532I.DLL or WWWNT32I.DLL).
Therefore, one of these two DLL's (depending on the operating system being
used) will need to be available (either in the current directory, in the
same directory as WWNET32I.DLL, or in a directory on the path).
Windows 95 extender 11000 First showing up in WB 96F
New functions:
w95ShareAdd(s:server-name, s:resource, s:share-name, i:share-type, i:flags)
Shares a resource.
w95ShareSet(s:server-name, s:share-name, s:comment, s:full-password, s:read-password)
Sets additional share information for a resource.
w95ShareDel(s:server-name, s:share-name)
Un-shares a resource.
w95AccessAdd(s:server-name, s:resource, s:user/group name, i:access-rights, i:flags)
Adds or updates an access (permission) record for a resource.
w95AccessDel(s:server-name, s:resource, s:user/group name)
Removes an access (permission) record from a resource.
w95ListGroups(s:server)
Lists all global user groups in an NT domain.
w95MemberGet(s:server, s:group, s:user)
Determines if user is a member of a global group in an NT domain.
w95MemberSet(s:server, s:group, s:user)
Adds user to a global group in an NT domain.
w95MemberDel(s:server, s:group, s:user)
Removes user from a global group in an NT domain.
w95MemberGrps(s:server, s:user)
Lists all global groups in an NT domain to which a user belongs.
w95MemberList(s:server, s:group)
Lists all members of a global group in an NT domain.
Windows NT extender 11000 First showing up in WB 96F
New functions:
wntShareAdd(s:server-name, s:resource, s:share-name, i:share-type, i:max-users)
Shares a resource.
wntShareSet(s:server-name, s:resource/share-name, i:share-type, s:comment, s:location)
Sets additional share information for a resource.
wntShareDel(s:server-name, s:resource/share-name, i:share-type)
Un-shares a resource.
wntAccessAdd(s:server-name, s:resource/share-name, s:user/group name, i:object-type, s:access-string)
Adds or updates access (permission) records for a resource.
wntAccessDel(s:server-name, s:resource/share-name, s:user/group name, i:object-type)
Removes access (permission) records from a resource.
wntAccessGet(s:server-name, s:resource/share-name, s:user/group name, i:object-type)
Returns access (permission) records for a resource.
wntListGroups(s:server, i:group-type)
Lists all user groups on a server or domain.
wntMemberGet(s:server, s:group, s:user, i:group-type)
Determines if user is a member of a group.
wntMemberSet(s:server, s:group, s:user, i:group-type)
Adds user to a group.
wntMemberDel(s:server, s:group, s:user, i:group-type)
Removes user from a group.
wntMemberGrps(s:server, s:user, i:group-type, i:flags)
Lists all groups to which a user belongs.
wntMemberList(s:server, s:group, i:group-type)
Lists all members of a user group.
wntResources2(s:net-resource, i:scope, i:type, i:usage, s:provider)
Itemizes network resources.
wntServiceAt(s:server, s:domain, i:server-type, s:service-name, i:flags)
Lists all servers in a domain which contain a specified service.
wntChgPswd(s:server/domain, s:user, s:old-pass, s:new-pass)
Changes a user's password.
Windows 3.1 (Basic) extender 15003 First showing up in WB 96F
w3AddCon and w3GetCon now accept printer ports higher than LPT3 (up to LPT9).
Windows for Workgroups (MultiNet) extender 16002 First showing up in WB 96F
wnAddCon and wnGetCon now accept printer ports higher than LPT3 (up to LPT9).
All functions which change the active sub-network now restore it afterwards.
This fixes a problem with using NetInfo after one of the extender functions.
WILX extender 11105 First showing up in WB 96F
In the 32-bit version, changed xMemCompact:
In Windows 95, this function is not supported and will return 0.
In Windows NT, this function has been fixed to use the appropriate Win32
system calls. Since there's no distinction between local and global
memory in NT, it doesn't make any difference whether you specify a
'type' of 0 or 1.
WinBatch version 96G
WB 96G Oct 21, 1996
DLL 2.3gbn First showing up in WB 96G
Fixed string memory leak when comparing "floating point string" variables, eg:
x = "1.25"
If x != 0 Then y = 1
FileVerInfo now returns the string "NONE" if no version information is
available for the specified file (previously, it returned an error).
Windows NT extender 11001 First showing up in WB 96G
Fixed problem with wntAccessAdd, when accessing registry keys.
Windows 3.1 (Basic) extender 15004 First showing up in WB 96G
Fixed problem with the extender not loading due to a "wrong platform" error.
WinBatch version 96H
WB 96H Nov 4, 1996
In compiler, fixed a problem creating an EXE if the 'TEMP' environment
variable pointed to an invalid directory.
DLL 2.3hbn First showing up in WB 96H
You can now specify partial child window names beginning with a tilde (~)
(see "DLL 2.2abj" section, above).
In Debug mode, a couple of status strings were not being displayed when
appropriate: "*** Debug Initialized ***" and "IF DO==>FALSE".
WinBatch version 96J
WB 96J Nov 5, 1996
Fixed problem with BoxDestroy not removing buttons.
DLL 2.3jbn First showing up in WB 96J
In 32-bit version, fixed problem with network licensing.
Fixed problem parsing constant names which contain underscores (eg,
"@ATTR_RO") (this bug first appeared in 2.3fbn).
Improved MouseClick function. Double-clicks should now work better (there
was a problem with some applications). In the 32-bit version, improved
the method of emulating other types of clicks, especially when using
modifiers such as @SHIFT and @CTRL.
Fixed problem with SendMenusTo with double-byte character sets.
In the Dialog function, fixed problem where the dialog would be centered
on the screen if you specified a small number (less than 20 or so) for the
Y (vertical) coordinate.
In 32-bit version, improved the reliability of the DiskFree and DiskSize
functions with drives larger than 2 gigabytes, under Windows 95 OEM
Service Release 2 or higher. Under earlier versions of Windows 95, these
functions may not return accurate results. Under NT, there is no problem.
Windows NT extender 11002 First showing up in WB 96J
New functions:
wntOwnerGet(s:server-name, i:reg-key, s:resource-name, i:object-type, i:flag)
Returns the owner of an object.
wntOwnerSet(s:server-name, i:reg-key, s:resource-name, i:object-type, s:user/group name)
Takes ownership of an object.
NetWare 3 extender 12017 First showing up in WB 96J
n3MsgSend now returns @FALSE if the specified user is not logged in, and
returns an error if an invalid user name is specified.
NetWare 4 extender 14015 First showing up in WB 96J
Fixed problem with n4CaptureGet returning an incorrect name in some cases.
Changed n4CaptureGet to return an abbreviated name relative to the current
context (eg, "Printer1.Print") instead of a canonical name
(eg, "Printer1.Print.Sales").
n4MsgSend now returns @FALSE if the specified user is not logged in, and
returns an error if an invalid user name is specified.
WB 96K Dec 9, 1996
Fixed problem (introduced in 96J) with large EXE's failing to extract the
embedded DLL's if launched from a UNC (with a "Disk space lookup" error).
DLL 2.3kbn First showing up in WB 96K
Fixed problem (introduced in 96J) with FileCopy, FileMove, and FileAppend
failing if the target was a UNC (with an "Insufficient free space" error).
Fixed problem with DirExist returning @FALSE for a top-level UNC (eg,
"\\FredsPC\C").
WB 96M Dec 12, 1996
DLL 2.3mbn First showing up in WB 96M
In 32-bit version, fixed problem with SendKey causing a system crash under
NT 4.0 when sending keystrokess to two different windows and switching
back and forth rapidly between them.
NetWare 3 extender 12018 First showing up in WB 96M
Fixed problem with n3GetMapped truncating the server name parameter after
14 characters (instead of 16).
NetWare 4 extender 14016 First showing up in WB 96M
Fixed problem with n4GetMapped truncating the server name parameter after
14 characters (instead of 16).
WB 97A Jun 12, 1997
New IntControl's:
IntControl(1005, p1, 0, 0, 0)
Gets or starts shutdown script mode.
IntControl 1004 now returns a full path for compiled WinBatch EXE's.
In 32-bit version, fixed problem with compiler where large (standalone)
compiled EXE's run from a floppy drive were extracting the DLL to the
floppy drive instead of to the Windows directory.
Improved the internal version information in the executables and DLL's.
Increased the amount of memory available for strings from 32000 bytes to
65500 bytes.
DLL 2.4abp First showing up in WB 97A
New functions:
RegExistKey(handle, subkey-string)
Checks whether a registry key exists.
RegExistValue(handle, subkey-string) (32-bit only)
Checks whether a value for a registry key exists.
StrIndexWild(string, pattern, start)
Finds wildcarded text within a larger string.
StrLenWild(string, pattern, start)
Returns the length of wildcarded text within a larger string.
StrSubWild(string, pattern, start)
Extracts a substring matching wildcarded text from within a larger string.
ClipGetEx(format)
Returns the contents of the Windows clipboard in a specified format.
WinItemizeEx(s:partial-winname, i:multiple, i:hidden)
Returns the full name of window(s) matching a partial window name.
Changed DateTime/TimeDate and FileTimeGet to return a Day/Night code (eg,
AM or PM) of from 0 to 4 characters (depending on what is set in the user's
current International/Regional settings), instead of a fixed 2-character
string, in order to support double-byte character sets. Therefore, the
length of the string returned by DateTime/TimeDate will now vary from 22
to 26 characters long, and the length of the string returned by FileTimeGet
will now vary from 15 to 19 characters long, instead of being a fixed length.
In the ItemExtract function, you can now specify -1 for "index" to return
the last item in the list.
In the Environment() function, the maximum value length has been increased
from 256 bytes to 1280 bytes. It will return a blank string ("") for
environment variables whose values are longer than 1280 bytes.
FileSize no longer returns 0 if one of the specified files does not exist.
FileDelete and DirRemove no longer return an error if one of the specified
files or directories does not exist.
In 32-bit version under international (non-US) versions of Windows NT, fixed
problem with licensee names containing certain extended characters (eg, Kanji).
In 32-bit version, the Run[..] commands now display a more informative
error message on failure.
In 32-bit version under Windows 95 and Windows NT 4.0, dialog boxes
created with the Dialog command now use the default GUI font instead of
the system font.
In 32-bit version, fixed problem with functions that test for file
existence when the full path and filename was longer than 128 characters.
Fixed problem with BinaryIndex (and BinaryIndexNc) returning the offset
past the end of the buffer (instead of 0) if the search string was blank
and no non-NULL characters were found.
Fixed problem with BinarySort causing random crashes if the key type was
set to @WORD1 or @WORD2.
Added a parameter to IntControl(50). P2 can now specify the URL of the
web page to be launched when the user clicks on the "Go to Tech Support
Web Page" button. If p2 is "" or 0, no change is made to URL that is
currently set. The default is:
IntControl(50, 1, "http://techsupt.winbatch.com/", 0, 0)
Fixed a problem with OLE calls crashing if the called function returned a
NULL pointer; they now return a blank string in this case.
In 32-bit version, added a tiny delay to WinPlaceGet and WinPlaceSet,
to give newly-repositioned windows a chance to "settle down" before
retrieving their coordinates, making the returned values more reliable.
Fixed problem with IsNumber and IsFloat returning TRUE for some high ASCII
characters.
Windows 95 extender 11001 First showing up in WB 97A
New function:
w95FileClose(s:server-name, s:file-pathname)
Close all network connections to a file.
w95ServiceAt(s:server, s:domain, i:server-type, s:service-name, i:flags)
Lists all servers in a domain which contain a specified service.
w95ShareInfo(s:server-name, s:share-name, i:request)
Returns information about a shared resource.
w95UserInfo(i:request)
Returns information about the currently logged-on user.
Windows NT extender 11003 First showing up in WB 97A
New functions:
wntFileClose(s:server-name, s:file-pathname)
Close all network connections to a file.
wntAccessList(s:server-name, s:resource/share-name, i:object-type, i:flags)
Returns list of users who have access (permission) records for a resource.
wntShareInfo(s:server-name, s:resource/share-name, i:share-type, i:request)
Returns information about a shared resource.
wntGroupInfo(s:server-name, s:group, s:group-type, i:request)
Returns information about a group.
wntUserInfo(i:request)
Returns information about the currently logged-on user.
wntSvcStart(s:server, s:service-name, i:flags, s:params, s:delimiter)
Starts a service.
wntSvcControl(s:server, s:service-name, i:flags, i:control-code)
Stops or controls a service.
wntSvcStatus(s:server, s:service-name, i:flags, i:request)
Changed wntResources2 to ignore 'net-resource' and 'provider' unless
'scope' is 2. This avoids an "invalid parameter" error from Windows.
NetWare 3 extender 12019 First showing up in WB 97A
n3CapturePrt was truncating the queue name at 47 characters; it now accepts
queue names up to 65 characters long (the maximum length in Netware).
NetWare 4 extender 14017 First showing up in WB 97A
New functions:
n4LogoutTree(s:context, s:tree)
Logs out of Directory Services.
n4UserGroupEx(s:server-name, s:user-name, s:context)
Returns a list of groups to which the specified user belongs, in the specified context.
n4GetContext(i:request)
Returns the current user's default context or tree.
WILX extender 11106 First showing up in WB 97A
New function:
xEjectMedia(s:drive) (32-bit version only)
Ejects removable media from a device.
WB 97B Jun 23, 1997
DLL 2.4bbp First showing up in WB 97B
In the Run... commands in the 32-bit version, fixed a problem with not
looking up the application path in the registry if the "program-name"
parameter contained any path information.
WB 97C Jun 26, 1997
DLL 2.4cbp First showing up in WB 97C
New function:
ShortcutDir(s:name) (32-bit only)
New IntControl:
IntControl(52, p1, 0, 0, 0) (32-bit only)
Set dialog font.
Fixed problem with OLE calls crashing if they returned a NULL sub-object.
They now return 0. Eg:
App = ObjectOpen("Excel.Application")
Sheet = App.ActiveSheet ; ** returns 0, because there is no worksheet
Fixed problem with dialog boxes created with the Dialog function, where
if you typed a file mask into a editbox associated with a filelistbox,
there would be garbage characters at the end of the file mask.
Fixed problem with BinaryIndex and BinaryIndex searching for characters
with ASCII values >= 128.
IntControl(5) now works in the 32-bit version. Before, it had no effect,
and hidden and system files were always included. The default is now to
exclude hidden and system files, as documented.
Windows 95 extender 11002 First showing up in WB 97C
New function:
w95IsNTServer(s:server-name)
Determines whether a computer is an NT server (or workstation).
Fixed problem with w95UserInfo crashing if RADMIN32.DLL was not available.
WB 97D Aug 21, 1997
In 32-bit version, fixed (hopefully) intermittent problem with FileMenu
crashing, notably when the files in the Explorer directory window changed.
In 16-bit version, fixed problem with the WinBatch box window stealing the
input focus from an application window on top of WinBatch.
Fixed probblem with the compiler not finding the OLE DLL if the DLL was
located in the compiler directory but was not on the path.
DLL 2.4dbp First showing up in WB 97D
Fixed problem with the FileCopy and FileMove commands, if the overwrite
warning option was specified and the file already existed. In the
"Confirm File Replace" dialog that was displayed, the "Use Newer All" and
"Use Older All" buttons did not work properly.
Dialog Editor 97D First showing up in WB 97D
In 32-bit version under Windows 95 and Windows NT 4.0, can now select GUI
or system font (via "Edit" menu items). Defaults to GUI font, like the
WIL Dialog() command does.
Windows NT extender 11004 First showing up in WB 97D
Increased the maximum length of the server, resource, and username
parameters in the wntAccess[..] and wntOwner[..] functions.
NetWare 3 extender 12020 First showing up in WB 97D
In the n3MsgSend and n3MsgSendAll functions, increased the maximum length
of the message string from 57 characters to 254 characters, when using
NetWare client version 3.11 or later.
NetWare 4 extender 14018 First showing up in WB 97D
In the n3MsgSend and n3MsgSendAll functions, increased the maximum length
of the message string from 57 characters to 254 characters.
WB 98A Jun 15, 1998
WinBatch compiler now accepts a single file name as a command-line
parameter (such as via drag-and-drop).
WinBatch compiler no longer converts output file name to lower case.
WinBatch compiler now removes end-of-line comments as well as entire
comment lines when optimizing WBT's.
Added the ability to embed external files when running or compiling a
WinBatch script, by using the new "#include" pre-processor directive.
The syntax is:
#include "filename"
DLL 2.5abq First showing up in WB 98A
New functions:
BinaryCompare(handle1, offset1, handle2, offset2, count)
Compares portions of two binary buffers.
BinaryReadEx(handle, binary-offset, filename, file-offset, count)
Reads a portion of a file into a binary buffer.
BinaryWriteEx(handle, binary-offset, filename, file-offset, count)
Writes a portion of a binary buffer to a file.
BinaryAnd(target-handle, target-offset, source-handle, source-offset, count)
Performs a bitwise AND on portions of two binary buffers.
BinaryOr(target-handle, target-offset, source-handle, source-offset, count)
Performs a bitwise OR on portions of two binary buffers.
BinaryXor(target-handle, target-offset, source-handle, source-offset, count)
Performs a bitwise XOR (exclusive OR) on portions of two binary buffers.
BinaryConvert(handle, source-type, target-type, code-page, flags)
Converts a binary buffer.
This function can be used to perform the following types of conversions:
8-bit <-> Unicode
Multibyte <-> Unicode
ANSI <-> OEM
-> Uppercase
-> Lowercase
BinaryClipGet(handle, format)
Reads the contents of the Windows clipboard into a binary buffer.
BinaryClipPut(handle, format)
Writes a binary buffer to the Windows clipboard.
FileTimeGetEx(filename, time-field) (32-bit only)
Gets extended time information for a file or directory.
FileTimeSetEx(file-list, YmdHms, time-field) (32-bit only)
Sets extended time information for one or more files.
ObjectAccess(app.objname, create-flag)
Opens or creates an OLE 2.0 Automation object.
DirSize(s:dir-name, i:flags)
Finds the total size of a directory.
AskDirectory(prompt, browse-root, start-dir, confirm-prompt, flags) (32-bit, Win95/NT40 only)
Displays a directory browse dialog box, and returns the selected directory name.
New IntControls:
IntControl(53, p1, 0, 0, 0)
Set line terminator type for FileWrite.
IntControl(54, p1, p2, 0, 0)
Keep window on top.
IntControl(56, p1, 0, 0, 0)
Terminate an application.
IntControl(57, p1, 0, 0, 0) (32-bit, Windows 95 only)
Disable/enable system keys.
IntControl(58, p1, 0, 0, 0) (32-bit only)
Set system time.
IntControl(59, p1, p2, 0, 0)
Sends a WM_WININICHANGE or WM_SETTINGCHANGE message.
IntControl(60, p1, p2, 0, 0)
Sends a WM_DEVMODECHANGE message.
IntControl(61, p1, 0, 0, 0) (32-bit only)
Sets WinActivate() method.
IntControl(62, p1, 0, 0, 0) (32-bit only)
Sets dialog activation method.
The date string returned by the TimeDate function now includes a 4-digit
year, if this was configured via Control Panel.
In 32-bit version under Windows NT, RegDeleteKey now deletes a key even if
it has subkeys (under Windows 95 it has always done this).
Added additional special characters to the SendKey (and SendKeysTo and
SendKeysChild) functions:
Key SendKey equivalent
--- ------------------
0 on numeric keypad {NUMPAD0}
1 on numeric keypad {NUMPAD1}
2 on numeric keypad {NUMPAD2}
3 on numeric keypad {NUMPAD3}
4 on numeric keypad {NUMPAD4}
5 on numeric keypad {NUMPAD5}
6 on numeric keypad {NUMPAD6}
7 on numeric keypad {NUMPAD7}
8 on numeric keypad {NUMPAD8}
9 on numeric keypad {NUMPAD9}
* on numeric keypad {NUMPAD*}
+ on numeric keypad {NUMPAD+}
- on numeric keypad {NUMPAD-}
. on numeric keypad {NUMPAD.}
/ on numeric keypad {NUMPAD/}
Enter on numeric keypad {NUMPAD~} (32-bit only)
In 32-bit version, the Run[..] commands can now be used to launch a
shortcut to a non-executable, such as a document or a directory. However,
the "Wait" option is ignored in this case.
Fixed problem with TimeSubtract failing if the result was less than 1 year.
If the "length" parameter of StrSub is past the end of the string, it now
extracts to the end of the string, instead of returning a blank string.
Changed FileRead to treat line feeds as line terminators, instead of
carriage returns. This means that FileRead now supports both DOS files
(which have CR/LF terminators) and UNIX files (which have LF terminators).
Fixed problem with IntControl(5) in the 32-bit version.
In the Dialog function, ampersands ("&") are no longer being converted to
underscores in static text and varying text fields.
Added parameter to IntControl(49):
IntControl(49, p1, p2, 0, 0)
p2 = specifies the value that a dialog box (created using the "Dialog"
function) will return if the user closes the dialog without pressing
one of the pushbuttons in the dialog (eg, by pressing , or
by clicking on the "Close" icon in the title bar). The default is 1.
If a dialog returns 0, processing will be transferred to the label in
the script marked ":Cancel" (if any).
IntControl(40) now correctly sets the share mode used when opening a file
in "APPEND" mode with FileWrite(previously, it was only affecting files
opened in "WRITE" mode).
Fixed problem with input focus being lost when a dialog (created using the
"Dialog" function) was minimized and restored.
In 32-bit version, fixed problem prepending the path specified in the registry
under "App Paths" when launching a program, if the existing path was more than
300 characters long.
In 32-bit version, FileTimeGet no longer updates the file's last-access time.
SendKey (and SendKeysTo and SendKeysChild) now turns caps lock off while
sending keystrokes (and restores the previous state when it is done). This
fixes a problem that was occurring when caps lock was on, and a shifted key
combination was specified [eg, SendKey("+a")], resulting in a lower-case
character being sent. Although this was faithfully duplicating the behavior
of typing keystrokes manually ("reverse caps lock"), the intended behavior
is for SendKey to ignore the caps lock state, and to therefore behave
consistently whether caps lock is on or off.
In 32-bit version under Windows 95, fixed problem using KeyToggleSet twice
in a row.
Fixed bug in StrIndexWild that could cause program to hang.
Improved parameter handling for OLE functions:
Fixed string memory leak with OLE functions.
The following functions, which return a date string in YmdHms format, now
return a 4-digit year by default. This can be changed using IntControl(41):
FileYmdHms
TimeAdd
TimeJulToYmd
TimeSubtract
TimeYmdHms
Under Windows 98 and NT 5.0, fixed problem with WinActivate and SendKeysTo
not working, and problem with WIL dialogs not being activated. By default,
an alternate window activation method will be used under these operating
systems, which can be modified with IntControl(61) and IntControl(62).
Under Windows 98 and NT 5.0, messages boxes are now brought to the
foreground, but they will not be activated.
DiskScan no longer adds a trailing delimiter to the returned list.
DiskFree and DiskSize now accept lists with a trailing delimiter.
In the "overwrite warning" dialog in FileCopy and FileMove, if the file
name is too long to be displayed in its entirety, the beginning and end of
the name are now displayed, instead of the name simply being truncated.
In 32-bit version, the Wallpaper() function now supports the Active Desktop
wallpaper in Internet Explorer 4.0.
Fixed problem with StrIndexWild returning 0 if an asterisk ("*") in the
wildcard pattern matched 0 characters in the string.
In 32-bit version, improved the way FileFullName handles relative path
names, when the current directory is a UNC (network share).
The following functions no longer return a delimiter at the end of the list:
DirItemize
FileItemize
IntControl(31)
ItemInsert
ItemRemove
ItemSort
NetInfo
WinItemize
WinItemChild
WinItemNameId
Functions which take a date/time string in YmdHms format now return an
error if "24" is specified as the hour.
Windows 95 extender 11003 First showing up in WB 98A
The following functions have been renamed and moved to the new Windows
95/RADMIN (remote administration for Windows NT) extender. The existing
functions will continue to work in this version, but may be removed or
modified in future versions. Note that some of the parameters in the new
DLL have been changed (specifically, a "group-type" parameter has been
added to the w95ListGroups and w95Member[..] functions). Refer to the
help file for the new extender for further information.
Old name New name
------------- -------------
w95ListGroups w9xListGroups
w95MemberDel w9xMemberDel
w95MemberGet w9xMemberGet
w95MemberGrps w9xMemberGrps
w95MemberList w9xMemberList
w95MemberSet w9xMemberSet
w95ServiceAt w9xServiceAt
w95UserInfo w9xUserInfo
New functions:
w95ServerType(s:server-name)
Returns a server's platform.
w95ServiceInf(s:server-name)
Returns a server's type.
w95ShareAdd now creates persistent shares (ie, they do not disappear when
you reboot).
In 32-bit version, IntControl(68) (shut down computer) now does a power-off,
if supported by the computer.
Windows NT extender 11005 First showing up in WB 98A
New functions:
wntUserProps(s:server-name, s:user-name, i:request)
Returns information about a network user.
wntServerList(s:server-name, s:domain-name, i:server-type)
Lists servers in a domain.
wntUserAdd(s:server-name)
Adds a user account.
wntUserAddDat(s:element, s/i:value)
Sets parameter information for wntUserAdd.
wntUserDel(server-name, user-name)
Deletes a user account.
wntServerType(s:server-name)
Returns a server's platform.
wntServiceInf(s:server-name)
Returns a server's type.
wntUserGetDat(s:server-name, s:user-name, s:element)
Returns parameter information for a user account.
wntUserSetDat(s:server-name, s:user-name, s:element, s/i:value)
Modifies parameter information for a user account.
wntUserRename(s:server-name, s:old-username, s:new-username)
Renames a user account.
In wntAccessAdd and wntAccessDel, added additional values for "object-type":
301 directory in an NTFS partition, and all its subdirectories
302 directory in an NTFS partition, and all files in the directory
303 directory in an NTFS partition, and all its subdirectories, and
all files in the directory and all its subdirectories
401 registry key, and all its subkeys
wntFileClose now closes all connections to a file, instead of just the
first one. It also now returns the number of connections which existed
(and were closed) for the specified file.
wntChgPswd can now be used to specify a new password without knowing the
old password, if you are a member of the Administrators or Account
Operators local group. To do this, specify "*UNKNOWN*" as the old
password. In this case, the "user" parameter must specify an actual user
name (ie, it cannot be a blank string).
NetWare 4 extender 14019 First showing up in WB 98A
New function:
n4SetContext(s:context, s:tree)
Changes the current user's default context and/or tree.
n4ObjectProps now supports integer values, and some (but not all) other
non-string value types. Unsupported types will now be returned as blank
strings ("").
WB 98B Jun 24, 1998
In 32-bit version, the compiler now allows you to specify a tech support
URL (web page) to be used if an error occurs in the script (under
"Settings"). This can be overridden using IntControl(50).
In 32-bit version, the compiler now allows you to specify version
information strings to be embedded in the EXE (under "Version Info").
The compiler now creates a configuration file for each source file you
compile. It will be placed in the same directory as the source file, and
will have the same base name with an extension of ".CMP". For example, if
you compile "C:\UTIL\TEST.WBT", it will create a configuration file named
"C:\UTIL\TEST.CMP".
The compiler now allows you to specify additional files to be embedded in
a large EXE (under "Other files").
The compiler no longer supports automatic batch mode. If you run it with
command-line parameters, it will bring up the interactive interface with
the specified source file and output type pre-selected.
The ".DAT" file format for extenders to be embedded by the compiler has
changed. The new format is a text file with the first line being the
description of the file, and one or more additional lines listing files
to be embedded. The files may contain a full path; if a file doesn't have
path information, the compiler will look for it first in the compiler
directory, then on the path. For example:
Novell NetWare 4.x
wwn4z32i.dll
wwn4z16i.dll
For backwards compatability, the second line of the .DAT file may contain
a list of files, delimited by commas.
In 32-bit version, the compiler now supports embedded file names longer than
16 characters, and no longer converts embedded file names to upper case.
In 32-bit version, the compiler now has an option to have the script run
hidden (under "Settings").
Changed BoxNew so that if you create a new box which covers or overlaps an
existing box, the most recently created box will be on top.
DLL 2.5bbq First showing up in WB 98B
New functions:
BinaryTagInit(i:buffer, s:start-tag, s:end-tag)
Initializes a binary tag operation.
BinaryTagFind(s:tag-struct)
Finds the next binary tag.
BinaryTagExtr(s:tag-struct, i:flags)
Returns the text between the last-returned pair of binary tags.
BinaryTagRepl(s:tag-struct, s:new-string)
Replaces a binary tag with text.
BinaryIndexEx(handle, offset, string, direction, i:match-case)
Searches a buffer for a string.
ItemSortNc(list, delimiter)
Sorts a list, ignoring case.
In 32-bit version of FileVerInfo, if you specify a blank string for
"language-key", it will try to look up the item under the following
language keys, in the specified order:
In 32-bit version, changed method for converting floating point numbers to
strings. The new method should produce fewer anomolies, but in some cases
the results will be slightly different than the previous method.
Fixed problem with BinaryPokeStr letting you store a string that was one
byte larger than the size of the buffer.
Fixed problem with BinaryIndex and BinaryIndexNc failing if the string was
found at the very end of the text in the buffer (ie, right before the EOD).
WinActivate no longer resets a window's "stay-on-top" attribute.
Fixed a problem in dialog boxes, where pressing the "Enter" key would
sometimes select the "OK' button instead of the highlighted pushbutton.
Fixed a problem with OLE calls causing a 3130 error if they were supposed to
return an object handle, but the function call failed (ie, returned 0), and
the return value was not assigned to a WIL variable in the script.
The built-in variables "param1" through "param9" are now correctly undefined
for parameters which are not passed, when making multiple Call's.
Added 2 additional activation methods to IntControl(61) and IntControl(62):
P1 Method to use
-- -------------
3 Change foreground lock timeout.
4 Attach to the input thread of the foreground window.
Changed the default method in Windows 98 and NT 5.0 to "3".
AskDirectory now handles "start-dir" having a trailing backslash.
NetWare 3 extender 12022 First showing up in WB 98B
New functions:
n3FileTimeGet(s:filename, i:time-field)
Gets Netware time information for a file.
n3DirTimeGet(s:dirname, i:time-field)
Gets Netware time information for a directory.
NetWare 4 extender 14020 First showing up in WB 98B
n4FileTimeGet(s:filename, i:time-field)
Gets Netware time information for a file.
n4DirTimeGet(s:dirname, i:time-field)
Gets Netware time information for a directory.
Fixed problem with n4MemberSet not completely adding the user to the group.
Fixed problem with n4MemberDel deleting all members in the specified group.
WB 98C Sep 18, 1998
New IntControl:
IntControl(1007, p1, p2, p3, p4) (32-bit only) (Requires Windows 95+ or NT 4.0+)
Add/remove/check tray icon.
Fixed problem with compiler displaying an "Uninitialized variable" error if
certain options were chosen, and there was no "LastSource=" setting in the
compiler section of WWW-PROD.INI (which would have been the case if this
was the first time the compiler was run).
The #include directive will now also look for the specified file (if it
does not contain path information) in the same directory as the script
file being run or compiled
Fixed problem with the compiler always using ".EXE" as the extension when
reloading previous configurations, even when the output was a .WBC file.
DLL 2.5cbq First showing up in WB 98C
New Functions:
FileCopyAttr(source-list, destination, warning, s:attributes)
Copies files, and sets file attributes.
FileMoveAttr(source-list, destination, warning, s:attributes)
Moves files, and sets file attributes.
TimeDiff(s:time-value-1, s:time-value-2)
Returns the difference between two points in time.
New IntControls:
IntControl(63, p1, p2, p3, p4)
Sets coordinates for AskFileText and AskItemList windows.
IntControl(64, 0, 0, 0, 0) (32-bit only)
Gets the exit code returned by the last program run.
The windows displayed by AskFileText and AskItemList can now be resized
by the user.
In 32-bit version, the "Tile" parameter of the Wallpaper() function has a
new option:
2 = Stretch
This is available in Windows 98, and in Windows 95 with "Plus" installed.
Fixed a problem in dialog boxes, where pressing a hotkey corresponding to
the "OK" button (ie, the pushbutton with a value of 1) would select the
highlighted pushbutton instead, if the highlighted pushbutton was the
first control in the dialog and the focus had not previously been switched
away from it.
In 32-bit version, fixed problems with floating point to string conversions.
Fixed problem (again) with TimeSubtract, where the result could have a day
of "00" (eg, "96:04:00" instead of "96:03:31").
The existing documentation is not clear on the purpose or usage of the
TimeSubtract function. TimeSubtract is designed to subtract a
time-difference from a time-value:
TimeSubtract(s:time-value, s:time-difference)
"time-value" is a valid date-time string, in YmdHms format.
"time-difference" is an amount of time to be subtracted from
"time-value", in YmdHms format.
The result is a time string in YmdHms format.
Examples:
; Subtract 1 day from 9/1/98 (at midnight)
TimeSubtract("1998:09:01:00:00:00", "00:00:01:00:00:00")
; Subtract 48 hours from the current time
TimeSubtract(TimeYmdHms(), "00:00:00:48:00:00")
TimeSubtract is NOT designed to determine the difference between two
points in time. For that, use TimeDiffDays, TimeDiffSecs, or the new
TimeDiff function (above).
Adjusted the way TimeAdd and TimeSubtract deal with cases where you are
adding or subtracting a certain number of months, and the result would
be an invalid date. For example:
TimeAdd("1998:08:31:00:00:00", "00:01:00:00:00:00")
Here, you are asking to add one month to August 31, but there are only
30 days in September and therefore there is no September 31. In previous
versions, the result would have been October 1 (ie, there are 31 days in
August, so add 31 days). In this new version, it will no longer wrap the
month add/subtract operation past the end of a month, so the result will
now be September 30. Similarly, in this example:
TimeSubtract("1998:10:31:00:00:00", "00:01:01:00:00:00")
which subtracts one month and one day from October 31, the result will
now be September 29, not September 30. That is to say, it first
subtracts the month(s), adjusts the result to the last day of the month
if necessary, and then subtracts the day(s) (and hours, minutes, seconds).
In 32-bit version, added an additional option to IntControl(28):
2 = GUI font (Windows 95+ and NT 4.0+ only)
Note that this option applies to AskLine (and AskPassword), as well
as to AskFileText and AskItemList.
BinaryClipGet now stops reading clipboard data at the first NULL
character for text format types (1, 7, and 13).
BinaryClipPut now adds a NULL terminator to the data being written to
the clipboard for text format types (1, 7, and 13).
Windows NT extender 11006 First showing up in WB 98C
New functions:
wntRasUserGet(s:server-name, s:user-name, i:request)
Gets RAS information for a user.
wntRasUserSet(s:server-name, s:user-name, i:privilege, s:phone-number)
Sets RAS information for a user.
wntRunAsUser(s:domain/server, s:user-name, s:password, i:login-type, i:flags)
Run as a different user.
WB 98D Sep 29, 1998
PopMenu now puts double-quotes around the menu file name when launching the
editor.
PopMenu now attempts to return the focus to the previously-active window after
executing a menu item.
DLL 2.6dbr First showing up in WB 98D
New functions:
DebugTrace(i:mode, s:log-file)
Outputs debug information to a file.
WinItemProcID(i:process-id, i:flags, i:return-type)
Returns a list of windows for the specified process.
You can now obtain the process ID of an application that is launched with
the RunShell function by specifying @GETPROCID as the "waitflag". This is
the same as specifying @NOWAIT, except that on success the function will
return the process ID of the application that was launched. This process
ID can be used with the WinItemProcID function (see above). The process
ID may be a negative number. If you use RunShell to launch a shortcut to
a special (non-executable) shortcut (eg, a dial-up networking item), a
process ID cannot be obtained. Instead, a 1 will be returned to indicate
success. In all cases, a return value of 0 indicates failure.
Fixed problem with TimeDiff returning a negative number for the month
field, in certain cases.
The date string returned by the FileTimeGet function now includes a 4-digit
year, if this was configured via Control Panel.
In 32-bit version, fixed problem assigning string properties to OLE objects
(they weren't being properly converted to Unicode, so looked like gibberish).
Fixed problem with NetInfo(1) missing some installed clients under Windows
95, in unusual cases.
Fixed problem with BinaryIndexEx returning 0 instead of -1, if the string
being searched for would extend beyond the limits of the binary buffer.
Windows NT extender 11007 First showing up in WB 98D
New function:
wntMemberLst2(server-name, group, group-type)
Lists all members of a user group, with domains.
Modified the format of the "acct_expires" element in wntUserAddDat,
wntUserGetDat, and wntUserSetDat. Previously, this was set and returned
as an integer representing the number of seconds since 1/1/70. It has
now been changed to a string in "YYYY:MM:DD:hh:mm:ss" format.
WILX extender 11107 First showing up in WB 98D
Under Windows NT, xEjectMedia no longer returns an error or displays a
"Drive not ready" message if the drive is empty.
WB 98E Nov 9, 1998
Fixed a problem with PopMenu not setting the focus to the previously-active
window before executing a menu item.
WB 99A Jan 5, 1999
Added additional option for IntControl(1007):
p1 Meaning
-- -------
3 Suspend script until user clicks on the tray icon
This can be used at any point after a WinBatch script has already been
placed in the tray (with p1 == 1). When the user clicks on the tray
icon, it will return one of the click values as listed for p1 == 0.
Fixed problem with PopMenu where, if you clicked on the tray icon but didn't
select a menu item, the next few times you clicked on the tray icon the menu
would come up and then immediately disappear.
The compiler will now unconditionally extract embedded files (in the "Other
files" category), whether or not they already exist. They will be extracted
to the directory where the large EXE is located, or to the Windows directory
if the EXE is being run from a floppy disk or CD-ROM. As before, extender
DLL's will not be extracted if they already exist in the EXE directory or on
the path.
WinBatch can now run scripts larger than 64K.
Compiler can now compile scripts larger than 64K.
DLL 2.7abs First showing up in WB 99A
New function:
MouseCoords(s:win-name, s:child-win)
Returns coordinates of the mouse within a window.
Fixed a problem with several file functions, which occured if the current
directory was a UNC of the form "\\SERVER\SHARE\DIR[\...]" (not just
"\\SERVER\SHARE"), and the specified file name or wildcard did not contain
path information. This could cause a "File not found" type of error.
When a WIL script is manually terminated by the user (eg, by pressing
Ctrl-Break), it now displays the line that was being processed.
Added additional option to IntControl(62):
P1 Method to use
-- -------------
-2 Don't activate WIL dialog windows at all.
Added new request # to MouseInfo:
Req# Return value
---- ------------
7 returns mouse coordinates relative to the bounding rectangle of the
window under the cursor, in virtual (1000x1000) screen units.
Fixed problem with some of the Binary[..] functions crashing (instead of
returning an error) if an offset < 0 was specified.
In 32-bit version, changed the way the following string sorting and
comparison functions operate:
BinarySort
ItemSort
ItemSortNc
StrCmp
StriCmp
>, >=, <, and <= (operators)
Previously, they were sorting (or comparing) strings on a
character-by-character basis. They now perform a "word sort", which sorts
strings based on their collation sequence. Hyphens and apostrophes are
ignored, and all other non-alphanumeric characters are sorted before any
alphanumeric character.
Changed ItemSortNc so that, if the strings being sorted are the same on a
case-insensitive basis, they will then be sorted on a case-sensitive basis.
In 32-bit version, changed memory allocation for strings to be dynamic.
This means that you should no longer receive an error 3096 ("Out of memory
for strings"), unless Windows itself is completely out of memory (unlikely).
In the Dialog function, ampersands ("&") are now once again being converted
to underscores in static text and varying text fields.
In 32-bit version, increased limit for FileItemize and DirItemize lists from
32K to 1MB.
Fixed a problem with menu parsing if you had a third-level menu followed
by a top-level menu.
OLE functions now support in-process servers.
Fixed a problem with MouseClick not sending the correct types of clicks.
Fixed an intermittent OLE crash problem.
OLE now supports properties with parameters.
Windows NT extender 11008 First showing up in WB 99A
New functions:
wntUserExist(s:server-name, s:user-name)
Determines whether a user exists.
wntCurrUsers(s:server-name, s:flags)
Lists users currently logged into a server.
wntFileUsers(s:server-name, s:file-pathname)
Lists network users who have a file open.
wntAcctInfo(s:server-name, s:account-name, i:request)
Returns information about a user account.
wntGroupAdd(s:server-name, s:group-name, i:group-type, s:comment)
Creates a user group.
wntGetDrive(s:net-resource)
Lists local drives mapped to a UNC.
wntSvcCfgGet(s:server, s:service-name, i:flags, i:request)
Gets a configuration parameter for a service.
wntSvcCfgSet(s:server, s:service-name, i:flags, i:request, s/i:value)
Changes a configuration parameter for a service.
wntEventWrite(s:server-name, s:source-name, i:type/category, i:event-id, s:description)
Writes an entry to an NT event log.
New audit functions:
wntAuditAdd(server-name, resource/share-name, user/group name, object-type, access-string)
Adds audit records for a resource.
wntAuditDel(server-name, resource/share-name, user/group name, object-type)
Removes audit records from a resource.
wntAuditGet(server-name, resource/share-name, user/group name, object-type)
Returns audit records for a resource.
wntAuditList(s:server-name, s:resource/share-name, i:object-type, i:flag)
Returns list of users who have audit records for a resource.
The following changes have been made to wntRunAsUser:
After you use wntRunAsUser, any programs you launch via the Run[..] or
ShellExecute commands will be run in the context of the impersonated user.
In order for this to work, the currently logged-in user (not the user
being impersonated) needs to have the following privileges set:
Increase quotas
Replace a process level token
You can specify a user name of "" to end the impersonation.
The "flag" parameter can contain one or more of the following values,
combined using the bitwise OR ("|") operator:
Flag Meaning
---- -------
1 Allow new child processes to interact with the desktop
Fixed wntChgPassword when specifying an old-password of "*UNKNOWN*".
Functions which return a tab-delimited list no longer include a tab at
the end of the list.
Added new request to wntGroupInfo:
Req Returns
--- -------
2 i:group's RID (relative identifier)
This request is valid only with global groups.
Added new "element" to wntUserGetDat:
"user_id" (i): user's RID (relative identifier)
Note: This element cannot be set using wntUserAddDat or wntUserSetDat.
Added new "element" to wntUserGetDat and wntUserSetDat:
"primary_group_id" (i): RID (relative ID) of the user's primary global group
You can determine a group's RID using wntGroupInfo with request = 3.
Note: This element cannot be set using wntUserAddDat.
Windows 95 extender 11004 First showing up in WB 99A
New functions:
w95FileUsers(s:server-name, s:file-pathname)
Lists network computers who have a file open.
w95GetDrive(s:net-resource)
Lists local drives mapped to a UNC.
w95FileClose now closes all connections to a file, instead of just the
first one. It also now returns the number of connections which existed
(and were closed) for the specified file.
Functions which return a tab-delimited list no longer include a tab at
the end of the list.
Windows 9x extender 11001 First showing up in WB 99A
New function:
w9xOwnerGet(s:server-name, i:reg-key, s:resource-name, i:object-type, i:flag)
Returns the owner of an object.
NetWare 4 extender 14021 First showing up in WB 99A
New functions:
n4GetUserName(s:context)
Returns the name of the currently logged-in user.
n4ObjGetVal(s:context, s:object, s:attribute)
Returns values for an object attribute.
n4ObjOptions(s:value-delim, s:field-delim, s:null-sub, i:flags, s:reserved)
Specifies options for n4ObjGetVal.
n4ObjectProps now handles all value types, except file streams.
Distinguished names are now returned in abbreviated, typeless form.
Binary strings are returned with any NULL's replaced by spaces. For
complex structure types (ie, not a single string or integer), the most
useful information from the structure is returned, in the best form
possible. To get all the data from such value types, use n4ObjGetVal.
Fixed a problem with n4NameConvert returning a typed name with format == 4.
WILX extender 11108 First showing up in WB 99A
Fixed xMessageBox so the message box will come the foreground in Windows
98 and NT 5.0.
WB 99B Jan 13, 1999
DLL 2.7bbs First showing up in WB 99B
Call() function now handles WBC (encoded) and WBE (encrypted) files created
with versions of the compiler prior to 99A.
WB 99C Jan 20, 1999
Fixed problem with large compiled EXE's giving a "DLL not found" error at
runtime if they contained (exactly) 4 extender DLL's.
Fixed problem with compiler causing an error when embedding "Other files"
that were 0 bytes in size.
DLL 2.7cbs First showing up in WB 99C
Fixed problem with BinaryTag[..] functions not being able to handle
binary buffers larger than 64K.
Windows NT extender 11009 First showing up in WB 99C
Fixed problem with DLL not loading on NT 3.51.
Note: wntRunAsUser requires NT version 4.0 or higher.
Fixed problem with DLL not loading if RASSAPI.DLL was not found.
Note: wntRasUserGet and wntRasUserSet require RASSAPI.DLL.
NetWare 3 extender 12023 First showing up in WB 99C
New function:
n3GetConnNum(s:server)
Gets the connection number for the current workstation.
NetWare 4 extender 14022 First showing up in WB 99C
New function:
n4GetConnNum(s:server)
Gets the connection number for the current workstation.
WB 99D Feb 11, 1999
The compiler now automatically compresses the WinBatch script and any
"Other files" when creating an EXE, and uncompresses them when the EXE is
run. This will cause the compile to take a bit longer, and may add a
slight delay at runtime (depending on the CPU speed and the size of the
files involved), but it will almost always result in smaller compiled EXE's.
DLL 2.8dbt First showing up in WB 99D
New IntControl:
IntControl(65, p1, 0, 0, 0)
Sets maximum line length for FileRead.
Fixed problem using the Call() function to call WBC files created with
older versions of the compiler (pre-99A). Very small files worked, but
files over a certain size caused a verification failure error message.
FileDelete now returns a "File cannot be deleted" error instead of "File
not found" if the specified file exists but cannot be deleted.
Optimized FileRead by using buffered reads (for files only, not for
pipes). The default buffer size is 4096 bytes, and this is also the
maximum length of a line which can be read. This size can be changed
using the new IntControl(65). Lines which are too long to be read will
return an error (instead of being truncated, as in previous versions).
If you do a BinaryTagFind followed by another BinaryTagFind, the second
BinaryTagFind will now search for the next tag. Previously, you had to do
a BinaryTagRepl before being able to search for the next tag.
Fixed a problem with the wildcard string functions (StrIndexWild,
StrLenWild, and StrSubWild) where the text would not match a pattern with
trailing asterisks, eg: StrIndexWild("abc", "abc*", 1).
DllCall no longer crashes if called with an insufficient number of
parameters.
Fixed a problem with OLE, where, if an OLE call returned a NULL OLE object
which you assigned to a variable, and then tried to assign a new value to
that variable, it would cause a "Bad OLE channel" error.
In 32-bit version, added a 1-second delay after a successful WinWaitExist,
WinWaitChild, and WinWaitClose.
Windows NT extender 11010 First showing up in WB 99D
Fixed problem where a wntUserExist which returned @FALSE could prevent
subsequent NT extender function calls from working properly.
NetWare 4 extender 14023 First showing up in WB 99D
Fixed problem with object names being returned with relative names instead
of canonical names in some cases.
WB 99E Apr 12, 1999
Fixed a problem with "#include" directives not working in executables
compiled with WinBatch 99D.
DLL 2.8ebt First showing up in WB 99E
In 32-bit version, changed floating point to string conversions, so that
results will now be returned in scientific format for numbers whose
absolute values are < 0.0001.
In 32-bit version, in the Decimals() function you can now specify these
values for "places":
Value Meaning
----- -------
-2 Use alternate method of converting to strings, with no trailing zeroes
-3 Always use scientific format
WB 99F Apr 15, 1999
DLL 2.8fbt First showing up in WB 99F
New IntControl:
IntControl(70, p1, 0, 0, 0) (32-bit only)
Set delay after WinWait[..] functions.
In 32-bit version, changed floating point to string conversions again.
If you have used the Decimals() function specifying a "places" value of 0
or higher, then results will no longer be returned in scientific format
for numbers whose absolute values are < 0.0001. Also, if you have
specified Decimals(0), then results will now be returned in scientific
format for numbers whose absolute values are > 2147483647.
DirRename was failing if the old and new names had drive letters that were
the same letter but one was upper case and the other was lower case.
In 32-bit version, there is a problem with IntControl(68) causing the
computer to reboot if it does not support the power-off feature. We've
added a new parameter to work around this:
P2 Meaning
-- -------
0 Power-off if supported by the computer (*see note below*)
1 Don't attempt to power-off
2 Attempt to power-off in any case
Note: We don't currently have a reliable method of determining if a
computer supports the power-off feature, so 0 will attempt to do a
power-off in any case.
In 32-bit version, changed the delay after a successful WinWaitExist,
WinWaitChild, and WinWaitClose, from 1 second to 1/2 second. This can be
changed or disabled with the new IntControl(70), above.
Windows NT extender 11011 First showing up in WB 99F
Fixed a rare problem with the extender crashing when making the first call
to any of the extender functions.
In wntSvcCfgSet, for request #7, if you specify "ServiceStartName" with no
password, the password will be set to a blank string (ie, same as
"ServiceStartName|"). To specify a non-blank password, use the form
"ServiceStartName|Password".
WB 99G May 7, 1999
DLL 2.8gbt First showing up in WB 99G
In 32-bit version, under Windows 95/98, fixed a problem using BinaryConvert
to convert a non-Unicode buffer to a Unicode buffer, while setting the flag
to specify that it also be converted to uppercase or lowercase. The
Unicode conversion was being performed properly, but the case conversion
was not. Note that under Windows 95/98, it is still not possible to
perform a case conversion of a Unicode buffer (ie, where "source-type" and
"target-type" are both Unicode). This is not a problem under Windows NT.
Improved DebugTrace, and fixed a problem with the last line in the script
not being output to the log file.
Fixed a problem with FileRead returning extra characters at the end of the
last line in the file, if the last line did not end with a line feed.
Increased the maximum number of extender entries from 200 to 500.
Windows NT extender 11012 First showing up in WB 99G
New functions:
wntWtsUserGet(s:server-name, s:user-name, i:request)
Gets user information from an NT Terminal Server.
wntWtsUserSet(s:server-name, s:user-name, i:request, s/i:value)
Modifies user information on an NT Terminal Server.
In wntMemberGet, if "group-type" is @LOCALGROUP, then "user" can now be
specified as either "user" or as "domain\user".
Windows 95 extender 11005 First showing up in WB 99G
w95GetUser will now attempt to repeatedly retry the operation for up to 30
seconds, or until a non-blank string can be returned, whichever comes first.
This is to avoid the problem where a blank string is returned when used in
a login script, and the user hasn't yet been fully logged in.
Windows 9x extender 10002 First showing up in WB 99G
New functions:
w9xGroupAdd(s:server-name, s:group-name, i:group-type, s:comment)
w9xGroupDel(s:server-name, s:group-name, i:group-type)
w9xGroupInfo(s:server-name, s:group, i:group-type, i:request)
w9xUserAdd(s:server-name)
w9xUserAddDat(s:element, s/i:value)
w9xUserDel(server-name, user-name)
w9xUserExist(s:server-name, s:user-name)
w9xUserGetDat(s:server-name, s:user-name, s:element)
w9xUserList(s:server-name, i:account-type)
w9xUserRename(s:server-name, s:old-username, s:new-username)
w9xUserSetDat(s:server-name, s:user-name, s:element, s/i:value)
Parameters and usage for all these functions are the same as in the
corresponding wnt[..] functions in the Windows NT extender, with the
restriction that "server-name" must specify an NT server (it can't be a
blank string), and "group-type" (where applicable) must be @GLOBALGROUP.
NetWare 4 extender 14024 First showing up in WB 99G
New functions:
n4FileUsers(s:server, s:filename)
Lists network users who have a file open.
WB 99H Aug 17, 1999
Added new "style" to BoxDrawCircle and BoxDrawRect:
3 = transparent circle/rectangle with border.
Fixed a problem with FileMenu sometimes adding duplicate copies of the
menu items to the Explorer "File" menu.
Compiler now supports Unicode WBT files.
DLL 2.8hbt First showing up in WB 99H
In 32-bit version, fixed WinParmGet(19).
In FileVerInfo, if you specify blank strings for both "language-key" and
"resource-string", it will now return a tab-delimited list of language
keys for which version information is available in the specified file.
There was a documentation error with IntControl's 66, 67, and 68. The
"force" flag is "P2", not "P1". And with IntControl 68, the "power off"
flag is "P3", not "P2". "P1" is not currently used in any of these three
IntControl's, and should be set to 0.
IntControl(32) now allows both reading from and writing to a memory
location. The syntax has been expanded.
Fixed a problem (introduced in WinBatch 99A) with OLE function calls
erroneously returning an error 1257 "Type mismatch".
In 32-bit version, fixed a problem with OLE functions adding an extra
NULL to the end of passed string parameters.
In 32-bit version, fixed a problem with KeyToggleSet sometimes not changing
the CapsLock or ScrollLock indicator lights until the next keystroke.
Fixed a problem with lines beginning with the word "to" causing a crash.
IsKeyDown and MouseInfo(4) now properly handle swapped mouse buttons.
Changed MouseInfo(4) to only look at the state of the buttons at the time
the function was called, not at the asynchronous state.
ItemCount now ignores a leading delimiter.
WaitForKey now supports the following special keycodes:
Keycode Meaning
------- -------
{INS} Insert
{NUMPAD0} 0 on numeric keypad
{NUMPAD1} 1 on numeric keypad
{NUMPAD2} 2 on numeric keypad
{NUMPAD3} 3 on numeric keypad
{NUMPAD4} 4 on numeric keypad
{NUMPAD5} 5 on numeric keypad
{NUMPAD6} 6 on numeric keypad
{NUMPAD7} 7 on numeric keypad
{NUMPAD8} 8 on numeric keypad
{NUMPAD9} 9 on numeric keypad
{NUMPAD*} * on numeric keypad
{NUMPAD+} + on numeric keypad
{NUMPAD-} - on numeric keypad
{NUMPAD.} . on numeric keypad
{NUMPAD/} / on numeric keypad
Note that NumLock must be on for the codes {NUMPAD0} through {NUMPAD9}
to be generated. Also, it cannot distinguish between the two "Enter"
keys on the keyboard (both will generate an {Enter} code).
Fixed a problem with BinaryIndex searching for high-ASCII characters.
Fixed a problem with FileVerInfo sometimes returning extraneous characters
at the end of the version string, and possibly causing a "Tag Overwrite" error.
Fixed problem running Unicode batch files and menus.
Windows NT extender 11013 First showing up in WB 99H
New functions:
wntAcctPolGet(s:server-name, i:request)
Gets account policy information for a server.
wntPrivAdd(s:server-name, s:user/group name, s:privilege)
Grants a privilege to a user or group.
wntPrivDel(s:server-name, s:user/group name, s:privilege)
Removes a privilege from a user or group.
wntPrivGet(s:server-name, s:user/group name, s:privilege)
Determines whether a user or group holds a privilege.
wntPrivList(s:server-name, s:user/group name)
Returns a list of priviliges granted to a user or group.
Added new "elements" to wntUserGetDat:
"password_age" (i):
"priv" (s):
"auth_flags" (i):
"parms" (i):
"units_per_week" (i):
"usri3_bad_pw_count" (i):
"num_logons" (i):
"logon_server" (s):
Added new request # to wntSvcStatus:
0 = Return @TRUE if the service exists, or @FALSE if it doesn't (other
request #'s will return an error if the service doesn't exist).
Changed wntAccessGet and wntAccessSet to open registry keys with only the
necessary access permissions, instead of all requiring all access.
Windows 9x extender 10003 First showing up in WB 99H
New function:
w9xFileUsers(s:server-name, s:file-pathname)
Lists network users who have a file open.
NetWare 4 extender 14025 First showing up in WB 99H
New functions:
n4ObjDelete(s:context, s:object)
Deletes an NDS object.
n4ObjRename(s:context, s:object, s:new-name, i:retain)
Renames an NDS object.
n4ObjMove(s:context, s:object, s:new-name, i:retain)
Moves an NDS object.
n4ObjSearch(s:context, s:object, s:class, s:parent, i:flags)
Searches a region of the directory for an NDS object.
n4ObjGetVal now supports stream values.
Fixed a problem with n4GetContext returning a non-blank string if the user
had logged into and then logged out of Directory Services befor the
function was called. It now returns a blank string in that situation.
Fixed a problem with n4UserGroups causing subsequent functions using the
context to fail.
Shortlived release. Immediately moved onto 99J.
WB 99J Aug 18, 1999
DLL 2.8jbt First showing up in WB 99J
ItemCount no longer ignores leading or trailing delimiters.
WB 99K Sept 30, 1999
New function:
MousePlay(s:X-Y-coordinates, s:parent-window, s:child-window, i:buttons, f:delay)
Performs full range of mouse associated activities.
MousePlay allows you to perform the full range of mouse associated activities
with a single function.
New IntControl:
IntControl(1008, p1, 0, 0, 0)
Enables/disables Close command.
Fixed a problem with BoxButtonWait, where you could use the arrow keys to
move the focus past the last button, where the focus would get lost. A
side effect is that the arrow keys can no longer be used to move between
buttons; use the Tab key instead.
Added support for OLE functions which return a NULL type (VT_NULL). They
get returned as a blank string ("").
Dialogs displayed by AskFileName are now centered on the screen.
Fixed problem with ClipGet truncating text greater than 64K.
DLL 2.9kbu First showing up in WB 99K
New IntControl:
IntControl(71, 0, 0, 0, 0)
Dump WIL and extender function tables to the debug log file.
Added new request # to MouseInfo:
Req# Return value
---- ------------
8 returns asynchronous status of mouse buttons, as a bitmask. This
is like request #4, except #8 returns the asynchronous (current)
state of the buttons, whereas #4 returns the state at the time
the function was called.
Added new flag to AskFileName:
2 = Open Style, allowing multiple files to be selected. The selected