Thanks very much, people! This should be an easy port. Since I write my own extenders, the only thing I have to worry about are any changes to the protcocol that references an extender function. (That calls the extender.) With Morrie's protocol, you just had to number the functions. e.g.
COMMEXTSTRUCT CommandExtTable[] =
{
/*--------------------------------------------------------------------------
Maximum of 5 parameters per function.
Name
ID Type Params/Value Size 123456789ABCD
--------------------------------------------------------------------------*/
{ 0, CONSTANT, MAX_PATH, 0, "@maxpath" }, // is equal to MAXPATH=260
{ 1, CONSTANT, WB_ERROR, 0, "@error" }, // is equal to 3
{ 2, CONSTANT, WB_LICENSE, 0, "@license" }, // is equal to 3
{ 3, CONSTANT, WB_OK, 0, "@ok" }, // is equal to 2
{ 4, CONSTANT, MAX_STRSPACE, 0, "@MAX_STRSPACE"}, // is equal to 15,000
{10, FUNCTION, 0x001F0001L, 0, "xextenderinfo"}, // xExtenderInfo(n)
{11, FUNCTION, 0x001F0001L, 0, "initextend1" }, // InitExtend1(s)
{12, FUNCTION, 0x001F0002L, 0, "yesnoquery" }, // YesNoQuery(s,s)
{13, FUNCTION, 0x001F0001L, 0, "fetchfilename"}, // FetchFileName(s)