Update dll support with new functions
Posted: Wed Jun 08, 2005 12:38 pm
Code updated For 5.20+
Not all functions in windows dlls are defined in the libs, i used this to update them. i needed VarDiv in oleaut32 wich is not included.
the idea is to use the code above with the lib definition in \PureBasic\PureLibraries\Windows , it will read it an output a .pbl file, then you simply append the new functions with the number of parameters and use the pb dll importer with it
here's the resulting pbl with VarDiv to be used with the dll importer
Not all functions in windows dlls are defined in the libs, i used this to update them. i needed VarDiv in oleaut32 wich is not included.
the idea is to use the code above with the lib definition in \PureBasic\PureLibraries\Windows , it will read it an output a .pbl file, then you simply append the new functions with the number of parameters and use the pb dll importer with it
Code: Select all
libFile$ = "C:\PureBasic\PureLibraries\Windows\oleaut32"
outpbl$ = "c:\test.pbl"
bFName = AllocateMemory(100)
If OpenFile(1, outpbl$)=0 : End : EndIf
If ReadFile(0, libFile$)
;dll name
FileSeek(0,9)
*pB.BYTE = bFName
While #True
ReadData(0,*pB, 1)
If *pB\b = 0 : Break : EndIf
*pB + 1
Wend
dllName$ = PeekS(bFName)
Debug dllName$
WriteStringN(0,dllName$ + ".dll")
;Functions
While Eof(0)=0
*pB.BYTE = bFName
While #True
ReadData(0,*pB, 1)
If *pB\b = 0 : Break : EndIf
*pB + 1
Wend
fName$ = PeekS(bFName)
nParams = ReadByte(0) ;n params
ReadByte(0) ;advance file pointer
Debug fName$
Debug nParams
WriteStringN(1,fName$ + " " + Str(nParams))
Wend
CloseFile(0)
CloseFile(1)
Else
Debug "failed to open lib file"
EndIf
FreeMemory(bFName)
Code: Select all
OLEAUT32.dll
BstrFromVector 2
BSTR_UserFree 2
BSTR_UserMarshal 3
BSTR_UserSize 3
BSTR_UserUnmarshal 3
ClearCustData 1
CreateDispTypeInfo 3
CreateErrorInfo 1
CreateStdDispatch 4
CreateTypeLib 3
CreateTypeLib2 3
DispCallFunc 8
DispGetIDsOfNames 4
DispGetParam 5
DispInvoke 8
DosDateTimeToVariantTime 3
GetActiveObject 3
GetAltMonthNames 2
GetErrorInfo 2
LHashValOfNameSys 3
LoadRegTypeLib 5
LoadTypeLib 2
LoadTypeLibEx 3
LPSAFEARRAY_Marshal 4
LPSAFEARRAY_Size 4
LPSAFEARRAY_Unmarshal 4
LPSAFEARRAY_UserFree 2
LPSAFEARRAY_UserMarshal 3
LPSAFEARRAY_UserSize 3
LPSAFEARRAY_UserUnmarshal 3
OaBuildVersion 0
OACreateTypeLib2 3
OleCreateFontIndirect 3
OleCreatePictureIndirect 4
OleCreatePropertyFrame 11
OleCreatePropertyFrameIndirect 1
OleIconToCursor 2
OleLoadPicture 5
OleLoadPictureFile 5
OleLoadPicturePath 6
OleSavePictureFile 2
OleTranslateColor 3
QueryPathOfRegTypeLib 5
RegisterActiveObject 4
RegisterTypeLib 3
RevokeActiveObject 2
SafeArrayAccessData 2
SafeArrayAllocData 1
SafeArrayAllocDescriptor 2
SafeArrayCopy 2
SafeArrayCopyData 2
SafeArrayCreate 3
SafeArrayCreateVector 3
SafeArrayDestroy 1
SafeArrayDestroyData 1
SafeArrayDestroyDescriptor 1
SafeArrayGetDim 1
SafeArrayGetElement 3
SafeArrayGetElemsize 1
SafeArrayGetLBound 3
SafeArrayGetUBound 3
SafeArrayLock 1
SafeArrayPtrOfIndex 3
SafeArrayPutElement 3
SafeArrayRedim 2
SafeArrayUnaccessData 1
SafeArrayUnlock 1
SetErrorInfo 2
SysAllocString 1
SysAllocStringByteLen 2
SysAllocStringLen 2
SysFreeString 1
SysReAllocString 2
SysReAllocStringLen 3
SysStringByteLen 1
SysStringLen 1
SystemTimeToVariantTime 2
UnRegisterTypeLib 5
UserBSTR_free_inst 1
UserBSTR_free_local 1
UserBSTR_from_local 2
UserBSTR_to_local 2
UserEXCEPINFO_free_inst 1
UserEXCEPINFO_free_local 1
UserEXCEPINFO_from_local 2
UserEXCEPINFO_to_local 2
UserHWND_free_inst 1
UserHWND_free_local 1
UserHWND_from_local 2
UserHWND_to_local 2
UserMSG_free_inst 1
UserMSG_free_local 1
UserMSG_from_local 2
UserMSG_to_local 2
UserVARIANT_free_inst 1
UserVARIANT_free_local 1
UserVARIANT_from_local 2
UserVARIANT_to_local 2
VarBoolFromCy 3
VarBoolFromDate 3
VarBoolFromDec 2
VarBoolFromDisp 3
VarBoolFromI1 2
VarBoolFromI2 2
VarBoolFromI4 2
VarBoolFromR4 2
VarBoolFromR8 3
VarBoolFromStr 4
VarBoolFromUI1 2
VarBoolFromUI2 2
VarBoolFromUI4 2
VarBstrFromBool 4
VarBstrFromCy 5
VarBstrFromDate 5
VarBstrFromDec 4
VarBstrFromDisp 4
VarBstrFromI1 4
VarBstrFromI2 4
VarBstrFromI4 4
VarBstrFromR4 4
VarBstrFromR8 5
VarBstrFromUI1 4
VarBstrFromUI2 4
VarBstrFromUI4 4
VarCyFromBool 2
VarCyFromDate 3
VarCyFromDec 2
VarCyFromDisp 3
VarCyFromI1 2
VarCyFromI2 2
VarCyFromI4 2
VarCyFromR4 2
VarCyFromR8 3
VarCyFromStr 4
VarCyFromUI1 2
VarCyFromUI2 2
VarCyFromUI4 2
VarDateFromBool 2
VarDateFromCy 3
VarDateFromDec 2
VarDateFromDisp 3
VarDateFromI1 2
VarDateFromI2 2
VarDateFromI4 2
VarDateFromR4 2
VarDateFromR8 3
VarDateFromStr 4
VarDateFromUdate 3
VarDateFromUI1 2
VarDateFromUI2 2
VarDateFromUI4 2
VarDecFromBool 2
VarDecFromCy 3
VarDecFromDate 3
VarDecFromDisp 3
VarDecFromI1 2
VarDecFromI2 2
VarDecFromI4 2
VarDecFromR4 2
VarDecFromR8 3
VarDecFromStr 4
VarDecFromUI1 2
VarDecFromUI2 2
VarDecFromUI4 2
VarI1FromBool 2
VarI1FromCy 3
VarI1FromDate 3
VarI1FromDec 2
VarI1FromDisp 3
VarI1FromI2 2
VarI1FromI4 2
VarI1FromR4 2
VarI1FromR8 3
VarI1FromStr 4
VarI1FromUI1 2
VarI1FromUI2 2
VarI1FromUI4 2
VarI2FromBool 2
VarI2FromCy 3
VarI2FromDate 3
VarI2FromDec 2
VarI2FromDisp 3
VarI2FromI1 2
VarI2FromI4 2
VarI2FromR4 2
VarI2FromR8 3
VarI2FromStr 4
VarI2FromUI1 2
VarI2FromUI2 2
VarI2FromUI4 2
VarI4FromBool 2
VarI4FromCy 3
VarI4FromDate 3
VarI4FromDec 2
VarI4FromDisp 3
VarI4FromI1 2
VarI4FromI2 2
VarI4FromR4 2
VarI4FromR8 3
VarI4FromStr 4
VarI4FromUI1 2
VarI4FromUI2 2
VarI4FromUI4 2
VariantChangeType 4
VariantChangeTypeEx 5
VariantClear 1
VariantCopy 2
VariantCopyInd 2
VariantInit 1
VariantTimeToDosDateTime 4
VariantTimeToSystemTime 3
VARIANT_UserFree 2
VARIANT_UserMarshal 3
VARIANT_UserSize 3
VARIANT_UserUnmarshal 3
VarNumFromParseNum 4
VarParseNumFromStr 5
VarR4FromBool 2
VarR4FromCy 3
VarR4FromDate 3
VarR4FromDec 2
VarR4FromDisp 3
VarR4FromI1 2
VarR4FromI2 2
VarR4FromI4 2
VarR4FromR8 3
VarR4FromStr 4
VarR4FromUI1 2
VarR4FromUI2 2
VarR4FromUI4 2
VarR8FromBool 2
VarR8FromCy 3
VarR8FromDate 3
VarR8FromDec 2
VarR8FromDisp 3
VarR8FromI1 2
VarR8FromI2 2
VarR8FromI4 2
VarR8FromR4 2
VarR8FromStr 4
VarR8FromUI1 2
VarR8FromUI2 2
VarR8FromUI4 2
VarUdateFromDate 4
VarUI1FromBool 2
VarUI1FromCy 3
VarUI1FromDate 3
VarUI1FromDec 2
VarUI1FromDisp 3
VarUI1FromI1 2
VarUI1FromI2 2
VarUI1FromI4 2
VarUI1FromR4 2
VarUI1FromR8 3
VarUI1FromStr 4
VarUI1FromUI2 2
VarUI1FromUI4 2
VarUI2FromBool 2
VarUI2FromCy 3
VarUI2FromDate 3
VarUI2FromDec 2
VarUI2FromDisp 3
VarUI2FromI1 2
VarUI2FromI2 2
VarUI2FromI4 2
VarUI2FromR4 2
VarUI2FromR8 3
VarUI2FromStr 4
VarUI2FromUI1 2
VarUI2FromUI4 2
VarUI4FromBool 2
VarUI4FromCy 3
VarUI4FromDate 3
VarUI4FromDec 2
VarUI4FromDisp 3
VarUI4FromI1 2
VarUI4FromI2 2
VarUI4FromI4 2
VarUI4FromR4 2
VarUI4FromR8 3
VarUI4FromStr 4
VarUI4FromUI1 2
VarUI4FromUI2 2
VectorFromBstr 2
VarDiv 3