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