'See CALL DWORD example in the PB help system
Code:
#DIM ALL 'DiskFree2 to overcome earlier Windows 95 not having GetDiskFreeSpaceExA 'This is from CALL DWORD example in the docs #INCLUDE "WIN32API.INC" DECLARE FUNCTION MyDiskFreeSpaceEx _ (lpPath AS ASCIIZ, lpFreeToCaller AS QUAD, lpTotalBytes AS QUAD, lpTotalFreeBytes AS QUAD) AS LONG FUNCTION PBMAIN AS LONG DIM result AS LONG, MyDrive AS STRING, MyDiskSize AS QUAD, MyDiskFree AS QUAD MyDrive = "C:\" MyDiskSize = DISKFREE(MyDrive) MSGBOX "Using Windows 98SE only get " & FORMAT$(MyDiskSize,"#,") '2,147,155,968 CALL Disksize2(MyDrive,MyDiskSize,MyDiskFree) IF MyDiskSize > -1 THEN MSGBOX "MyDiskSize: " + FORMAT$(MyDiskSize,"#,") & $CRLF & _ "MyDiskFree: " & FORMAT$(MyDiskFree,"#,") & $CRLF & _ "Used space: " & FORMAT$(MyDiskSize-MyDiskFree,"#,") ELSE MSGBOX "Earlier version of Windows 95 can't use GetDiskFreeSpaceExA" END IF END FUNCTION SUB DiskSize2(Drive AS STRING,SizeOfDisk AS QUAD,TotalFree AS QUAD) DIM hLib AS DWORD DIM pAddr AS DWORD DIM szDrv AS ASCIIZ * %MAX_PATH DIM lResult AS LONG szDrv = Drive DIM FreeToUserQuota AS QUAD hLib = LoadLibrary("KERNEL32.DLL") pAddr = GetProcAddress(hLib, "GetDiskFreeSpaceExA") IF pAddr <> 0 THEN CALL DWORD pAddr USING MyDiskFreeSpaceEx(szDrv, FreeToUserQuota&&, SizeOfDisk&&, TotalFree&&) TO lResult ELSE SizeOfDisk = -1 TotalFree = -1 END IF FreeLibrary hLib END SUB
[This message has been edited by Mike Doty (edited December 10, 2004).]
Leave a comment: