ActiveX control was registered from dll file using regsvr32:
cd \windows\syswow64
regsvr32 "C:\mapp\mycontrol.dll"
FoxPro object is created from it using
ofiscalprinter=CREATEOBJECT('mycontrol.Service.1')
In command window Intellisense shows its AX_SetAddInfoExt signature:
AX_SetAddInfoExt( aStatus as Number @,
opts as Number,
RegistrationNo as String,
DocumentNumber as String,
OtherDocumentNumber as String ) as Number
I need to pass null as parameter values.
Tried
astatus=0
ofiscalprinter.AX_SetAddInfoExt(@astatus,1,.null., .null., .null.)
ofiscalprinter.AX_SetAddInfoExt(@astatus,1,CAST(NULL as C(1) null), CAST(NULL as C(1) null), CAST(NULL as C(1) null))
throw
OLE error code 0x80020005: Type mismatch.
Also tried
ofiscalprinter.AX_SetAddInfoExt(@astatus,1,CHR(0), CHR(0), CHR(0) )
ofiscalprinter.AX_SetAddInfoExt(@astatus,1,0, 0, 0)
ofiscalprinter.AX_SetAddInfoExt(@astatus,1,'', '', '' )
ofiscalprinter.AX_SetAddInfoExt(@astatus,1,"", "", "" )
ofiscalprinter.AX_SetAddInfoExt(@astatus,1, [], [], [] )
ofiscalprinter.AX_SetAddInfoExt(@astatus,1,'1', '2', '3' )
throw
OLE error code 0x80004001: Not implemented.
Not implemented is probably thrown by method since it requires last or two parameters before last to have null. This looks like expected result, it looks like not null string parameters are passed correctly.
How to pass null values as parameters ? Maybe it is possible to use FoxPro .NET wrapper and call this from .NET

objectparameter, it will be .NETnullif you call it withNULLfrom VFP or it will be ofstringtype if you pass a"whatever"from VFP.void AX_SetAddInfoExt(ref int aStatus, int opts, object RegistrationNo, object DocumentNumber, object OtherDocumentNumber)and in that method, instantiate the original "mycontrol.Service.1" COM object and call it with string or null strings. From VFP callofiscalprinter=CREATEOBJECT('mydotnet.progid'), Difficult to say more w/o the real things.