![]() |
How can use LONGLONG type of C++ Dll in 'Declare Function' statement?
Hi,
I have a dll. I want to use a function in the dll on Excel VBA. The fuction is below. int GetDiskSpaceLeft(DWORD dwID, LONGLONG *lpllSpace); If this were "int GetDiskSpaceLeft(DWORD dwID, LONG *lpllSpace);", I knew how to use that. Private Declare Function GetDiskSpaceLeft lib 'xx.dll' (ByVal dwID as Long, ByRef lSpace as Long) However it's not "Long", but "LongLong" How can I use the dll function? |
How can use LONGLONG type of C++ Dll in 'Declare Function' stateme
One really quick'n'dirty solution I saw posted on a MSDN webpage is to use
the VB datatype Currency instead of LongLong, but you then have to remember to scale it by a factor 10,000 as well. The snippet below is taken from the following webpage: http://msdn.microsoft.com/library/de...ightweight.asp Surely, there must be cleaner ways of implementing support for LongLong, so I'll keep on looking, and when I find something I'll post it here... Cheers, /MP ================================================= Private Declare Function GetDiskFreeSpaceEx _ Lib "kernel32" Alias "GetDiskFreeSpaceExA" _ (ByVal lpRootPathName As String, _ lpFreeBytesAvailableToCaller As Currency, _ lpTotalNumberOfBytes As Currency, _ lpTotalNumberOfFreeBytes As Currency) As Long Private Sub DiskInfo() Dim cuAvailable As Currency Dim cuTotal As Currency Dim cuFree As Currency Call GetDiskFreeSpaceEx("C:\", cuAvailable, _ cuTotal, cuFree) Debug.Print "Disk space info" & vbCr & _ "Available : "; _ FormatByteSize(cuAvailable * 10000) & vbCr & _ "Total : "; _ FormatByteSize(cuTotal * 10000) & vbCr & _ "Free : "; _ FormatByteSize(cuFree * 10000) & vbCr & _ "Used : "; _ FormatByteSize((cuTotal - cuFree) * 10000) End Sub ================================================= "Zoo" wrote: Hi, I have a dll. I want to use a function in the dll on Excel VBA. The fuction is below. int GetDiskSpaceLeft(DWORD dwID, LONGLONG *lpllSpace); If this were "int GetDiskSpaceLeft(DWORD dwID, LONG *lpllSpace);", I knew how to use that. Private Declare Function GetDiskSpaceLeft lib 'xx.dll' (ByVal dwID as Long, ByRef lSpace as Long) However it's not "Long", but "LongLong" How can I use the dll function? |
How can use LONGLONG type of C++ Dll in 'Declare Function' stateme
I tried that. It worked fine.
Thank you for your great help! "Mat P:son" wrote in message ... One really quick'n'dirty solution I saw posted on a MSDN webpage is to use the VB datatype Currency instead of LongLong, but you then have to remember to scale it by a factor 10,000 as well. The snippet below is taken from the following webpage: http://msdn.microsoft.com/library/de...ightweight.asp Surely, there must be cleaner ways of implementing support for LongLong, so I'll keep on looking, and when I find something I'll post it here... Cheers, /MP ================================================= Private Declare Function GetDiskFreeSpaceEx _ Lib "kernel32" Alias "GetDiskFreeSpaceExA" _ (ByVal lpRootPathName As String, _ lpFreeBytesAvailableToCaller As Currency, _ lpTotalNumberOfBytes As Currency, _ lpTotalNumberOfFreeBytes As Currency) As Long Private Sub DiskInfo() Dim cuAvailable As Currency Dim cuTotal As Currency Dim cuFree As Currency Call GetDiskFreeSpaceEx("C:\", cuAvailable, _ cuTotal, cuFree) Debug.Print "Disk space info" & vbCr & _ "Available : "; _ FormatByteSize(cuAvailable * 10000) & vbCr & _ "Total : "; _ FormatByteSize(cuTotal * 10000) & vbCr & _ "Free : "; _ FormatByteSize(cuFree * 10000) & vbCr & _ "Used : "; _ FormatByteSize((cuTotal - cuFree) * 10000) End Sub ================================================= "Zoo" wrote: Hi, I have a dll. I want to use a function in the dll on Excel VBA. The fuction is below. int GetDiskSpaceLeft(DWORD dwID, LONGLONG *lpllSpace); If this were "int GetDiskSpaceLeft(DWORD dwID, LONG *lpllSpace);", I knew how to use that. Private Declare Function GetDiskSpaceLeft lib 'xx.dll' (ByVal dwID as Long, ByRef lSpace as Long) However it's not "Long", but "LongLong" How can I use the dll function? |
All times are GMT +1. The time now is 02:58 PM. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com