Calling DLL functions with structs

Dean Leggo dleggo at logicaldevelopments.com.au
Fri Aug 18 01:49:13 UTC 2023


Hey everyone

I am working on a project to convert some Visual Basic code to Omnis and 
the code block makes a number of DLL calls with structs. But Omnis' 
[Register 
DLL](https://www.omnis.net/developers/resources/onlinedocs/index.jsp?detail=CommandRef/Commands_A-Z/register_dll.html) 
does not support structs.

Has anyone passed a struct to a DLL or how can I call the DLL function?

An example could be 
[GetDiskSpaceinformationA](https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getdiskspaceinformationa)
I want to call it like the code below. This won't work as you cannot 
declare structs and the types are probably wrong. But this is want I am 
wanting to do.

Register DLL ("KERNEL32.DLL","CreateFileA","AC(RRRRRRRRRJJ)")
Do 
lrowDiskSpace.$define(int64,int64,int64,int64,int64,int64,int64,int64,int64,int64,int64,char4,char4)
Calculate lsDirectory as '%localappdata%\Omnis Software'
Call DLL ("KERNEL32.DLL","CreateFileA",lsDirectory,lrowDiskSpace) 
Returns lbOK

Cheers,
Dean Leggo

-- 

Logical Developments Logo <https://www.logicaldevelopments.com.au> 	Dean 
Leggo
Logical Developments
Customised Software Solutions
Ph: 08 9458 3889
		We Don't Do Simple Pty Ltd
trading as
Logical Developments
ACN: 161 009 374

	Facebook logo <https://www.facebook.com/logicaldevelopmentswa/> Twitter 
logo <https://twitter.com/WeDontDoSimple> LinkedIn logo 
<https://www.linkedin.com/company/logicaldevelopments/> YouTube logo 
<https://www.youtube.com/channel/UCPldVVgWR05WX3cVrR5WUQw>


More information about the omnisdev-en mailing list