Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
Zoo Zoo is offline
external usenet poster
 
Posts: 40
Default 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?


  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 97
Default 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?



  #3   Report Post  
Posted to microsoft.public.excel.programming
Zoo Zoo is offline
external usenet poster
 
Posts: 40
Default 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?




Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Help with VBA Type statement Rednosebob Excel Programming 4 February 6th 06 10:49 AM
IF statement based on data type Reed Excel Worksheet Functions 1 January 20th 05 02:17 PM
Case when statement gives type mismatch Henrik[_6_] Excel Programming 2 June 16th 04 04:36 PM
Type mismatch while running If statement Stel Excel Programming 4 December 18th 03 09:19 AM
declare type and value on one line? Jamie Martin[_2_] Excel Programming 4 October 1st 03 01:42 PM


All times are GMT +1. The time now is 08:38 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"