try this function<br><FONT FACE=monospace><br><b>function that returns bunch of info about the system</b><br>Public Function GetSysInfo(ByRef Reply As Variant) As Boolean<br><br> Dim msg As String ' Status information.<br> Dim nl As String ' New-line.<br> nl = Chr$(13) + Chr$(10) ' New-line.<br> Dim ret As Long<br> Dim ver_major As Long<br> Dim ver_minor As Long<br> Dim build As Long<br> <br> msg = ""<br> #If Win32 Then<br> ' Get operating system and version.<br> Dim verinfo As OSVERSIONINFO<br> verinfo.dwOSVersionInfoSize = Len(verinfo)<br> ret = GetVersionEx(verinfo)<br> If ret = 0 Then<br> GetSysInfo = False<br> Exit Function<br> End If<br> Select Case verinfo.dwPlatformId<br> Case 0<br> msg = msg + "Windows 32s "<br> Case 1<br> msg = msg + "Windows 9x "<br> Case 2<br> msg = msg + "Windows NT "<br> End Select<br><br> ver_major = verinfo.dwMajorVersion<br> ver_minor = verinfo.dwMinorVersion<br> build = verinfo.dwBuildNumber<br> msg = msg + vbNullChar + CStr(ver_major) + "." + CStr(ver_minor)<br> msg = msg + vbNullChar + CStr(build)<br><br> ' Get CPU type and operating mode.<br> Dim sysinfo As SYSTEM_INFO<br> GetSystemInfo sysinfo<br> Select Case sysinfo.dwProcessorType<br> Case PROCESSOR_INTEL_386<br> msg = msg + vbNullChar + "Intel 386"<br> Case PROCESSOR_INTEL_486<br> msg = msg + vbNullChar + "Intel 486"<br> Case PROCESSOR_INTEL_PENTIUM<br> msg = msg + vbNullChar + "Intel Pentium"<br> Case PROCESSOR_MIPS_R4000<br> msg = msg + vbNullChar + "MIPS R4000"<br> Case PROCESSOR_ALPHA_21064<br> msg = msg + vbNullChar + "DEC Alpha 21064"<br> Case Else<br> msg = msg + vbNullChar + "(unknown)"<br><br> End Select<br> ' Get free memory.<br> Dim memsts As MEMORYSTATUS<br> Dim memory&<br> GlobalMemoryStatus memsts<br> memory& = memsts.dwTotalPhys<br> 'msg = msg + "Total Physical Memory: "<br> msg = msg + vbNullChar + Format$(memory& \ 1024, "###,###,###"

+ "K"<br> memory& = memsts.dwAvailPhys<br> 'msg = msg + "Available Physical Memory: "<br> msg = msg + vbNullChar + Format$(memory& \ 1024, "###,###,###"

+ "K"<br> memory& = memsts.dwTotalVirtual<br> 'msg = msg + "Total Virtual Memory: "<br> msg = msg + vbNullChar + Format$(memory& \ 1024, "###,###,###"

+ "K"<br> memory& = memsts.dwAvailVirtual<br> 'msg = msg + "Available Virtual Memory: "<br> msg = msg + vbNullChar + Format$(memory& \ 1024, "###,###,###"

+ "K"<br> ' Get free system resources.<br> ' Not applicable to 32-bit operating system (Windows NT).<br> #Else<br> ' Get operating system and version.<br> ver& = GetVersion()<br> Status& = GetWinFlags()<br><br> If Status& And WF_WINNT Then<br> msg = msg + vbNullChar + "Microsoft Windows NT "<br> Else<br> msg = msg + vbNullChar + "Microsoft Windows "<br> End If<br> ver_major$ = Format$(ver& And &HFF)<br> ver_minor$ = Format$((ver& And &HFF00) \ &H100, "00"

<br> msg = msg + vbNullChar + ver_major$ + "." + ver_minor$<br><br> ' Get CPU type and operating mode.<br> If Status& And WF_CPU286 Then msg = msg + vbNullChar + "80286"<br> If Status& And WF_CPU386 Then msg = msg + vbNullChar + "80386"<br> If Status& And WF_CPU486 Then msg = msg + vbNullChar + "80486"<br> If Status& And WF_80x87 Then msg = msg + vbNullChar + " with 80x87"<br> 'msg = msg + "Mode: "<br> If Status& And WF_STANDARD Then msg = msg + vbNullChar + "Standard"<br> If Status& And WF_ENHANCED Then msg = msg + vbNullChar + "Enhanced"<br><br> ' Get free memory.<br> memory& = GetFreeSpace(0)<br> 'msg = msg + "Memory free: "<br> msg = msg + vbNullChar + Format$(memory& \ 1024, "###,###,###"

+ "K"<br> memory& = GlobalCompact(&HFFFFFFFF)<br> 'msg = msg + "Largest free block: "<br> msg = msg + vbNullChar + Format$(memory& \ 1024, "###,###,###"

+ "K" + nl<br><br> ' Get free system resources.<br> ' The SystemHeapInfo API function became available in Windows<br> ' version 3.1.<br> 'msg = msg + "System resources: "<br> If ver& >= &H310 Then<br> Dim shi As SYSHEAPINFO<br> shi.dwSize = Len(shi)<br> If SystemHeapInfo(shi) Then<br> If shi.wUserFreePercent < shi.wGDIFreePercent Then<br> msg = msg + vbNullChar + Format$(shi.wUserFreePercent) + "%"<br> Else<br> msg = msg + vbNullChar + Format$(shi.wGDIFreePercent) + "%"<br> End If<br> End If<br> Else<br> msg = msg + vbNullChar + "n/a"<br> End If<br> #End If<br> Reply = msg<br> GetSysInfo = True<br>End Function<br><b> the API declarations to be placed somewhere like a Module</b><br> #If Win32 Then<br> Type SYSTEM_INFO<br> dwOemID As Long<br> dwPageSize As Long<br> lpMinimumApplicationAddress As Long<br> lpMaximumApplicationAddress As Long<br> dwActiveProcessorMask As Long<br> dwNumberOrfProcessors As Long<br> dwProcessorType As Long<br> dwAllocationGranularity As Long<br> dwReserved As Long<br> End Type<br> Type OSVERSIONINFO<br> dwOSVersionInfoSize As Long<br> dwMajorVersion As Long<br> dwMinorVersion As Long<br> dwBuildNumber As Long<br> dwPlatformId As Long<br> szCSDVersion As String * 128<br> End Type<br> Type MEMORYSTATUS<br> dwLength As Long<br> dwMemoryLoad As Long<br> dwTotalPhys As Long<br> dwAvailPhys As Long<br> dwTotalPageFile As Long<br> dwAvailPageFile As Long<br> dwTotalVirtual As Long<br> dwAvailVirtual As Long<br> End Type<br><br> Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" _<br> (LpVersionInformation As OSVERSIONINFO) As Long<br> Declare Sub GlobalMemoryStatus Lib "kernel32" (lpBuffer As _<br> MEMORYSTATUS)<br> Declare Sub GetSystemInfo Lib "kernel32" (lpSystemInfo As _<br> SYSTEM_INFO)<br><br> Public Const PROCESSOR_INTEL_386 = 386<br> Public Const PROCESSOR_INTEL_486 = 486<br> Public Const PROCESSOR_INTEL_PENTIUM = 586<br> Public Const PROCESSOR_MIPS_R4000 = 4000<br> Public Const PROCESSOR_ALPHA_21064 = 21064<br> #Else<br> ' Constants for GetWinFlags.<br> Global Const WF_CPU286 = &H2<br> Global Const WF_CPU386 = &H4<br> Global Const WF_CPU486 = &H8<br> Global Const WF_80x87 = &H400<br> Global Const WF_STANDARD = &H10<br> Global Const WF_ENHANCED = &H20<br> Global Const WF_WINNT = &H4000<br><br> ' Type for SystemHeapInfo.<br> Type SYSHEAPINFO<br> dwSize As Long<br> wUserFreePercent As Integer<br> wGDIFreePercent As Integer<br> hUserSegment As Integer<br> hGDISegment As Integer<br> End Type<br><br> Declare Function GetVersion Lib "kernel" () As Long<br> Declare Function GetWinFlags Lib "kernel" () As Long<br> 'Enter each of the following Declare statements as one, single line:<br> Declare Function GetFreeSpace Lib "kernel" (ByVal wFlags As Integer) As Long<br> Declare Function GlobalCompact Lib "kernel" _<br> (ByVal dwMinFree As Long) As Long<br> Declare Function SystemHeapInfo Lib "toolhelp.dll" _<br> (shi As SYSHEAPINFO) As Integer<br> #End If<br>' **** Global variables used in both forms ****<br><br>Type VS_FIXEDFILEINFO<br> dwSignature As Long<br> dwStrucVersionl As Integer ' e.g. = &h0000 = 0<br> dwStrucVersionh As Integer ' e.g. = &h0042 = .42<br> dwFileVersionMSl As Integer ' e.g. = &h0003 = 3<br> dwFileVersionMSh As Integer ' e.g. = &h0075 = .75<br> dwFileVersionLSl As Integer ' e.g. = &h0000 = 0<br> dwFileVersionLSh As Integer ' e.g. = &h0031 = .31<br> dwProductVersionMSl As Integer ' e.g. = &h0003 = 3<br> dwProductVersionMSh As Integer ' e.g. = &h0010 = .1<br> dwProductVersionLSl As Integer ' e.g. = &h0000 = 0<br> dwProductVersionLSh As Integer ' e.g. = &h0031 = .31<br> dwFileFlagsMask As Long ' = &h3F for version "0.42"<br> dwFileFlags As Long ' e.g. VFF_DEBUG Or VFF_PRERELEASE<br> dwFileOS As Long ' e.g. VOS_DOS_WINDOWS16<br> dwFileType As Long ' e.g. VFT_DRIVER<br> dwFileSubtype As Long ' e.g. VFT2_DRV_KEYBOARD<br> dwFileDateMS As Long ' e.g. 0<br> dwFileDateLS As Long ' e.g. 0<br>End Type<br><br>Declare Function GetFileVersionInfo Lib _<br> "Version.dll" Alias "GetFileVersionInfoA" _<br> (ByVal lptstrFilename As String, ByVal dwhandle As Long, ByVal dwlen As Long, lpData As Any) _<br> As Long<br>Declare Function GetFileVersionInfoSize Lib _<br> "Version.dll" Alias "GetFileVersionInfoSizeA" _<br> (ByVal lptstrFilename As String, lpdwHandle As Long) _<br> As Long<br>Declare Function VerQueryValue Lib _<br> "Version.dll" Alias "VerQueryValueA" _<br> (pBlock As Any, ByVal lpSubBlock As String, lplpBuffer As Any, puLen As Long) _<br> As Long<br>Declare Sub MoveMemory Lib _<br> "kernel32" Alias "RtlMoveMemory" _<br> (dest As Any, ByVal source As Long, ByVal Length As Long)<br>Declare Function GetSystemDirectory Lib _<br> "kernel32" Alias "GetSystemDirectoryA" _<br> (ByVal path As String, ByVal cbBytes As Long) _<br> As Long<br><br>' ===== From Win32 Ver.h =================<br>' ----- VS_VERSION.dwFileFlags -----<br>Public Const VS_FFI_SIGNATURE = &HFEEF04BD<br>Public Const VS_FFI_STRUCVERSION = &H10000<br>Public Const VS_FFI_FILEFLAGSMASK = &H3F&<br><br>' ----- VS_VERSION.dwFileFlags -----<br>Public Const VS_FF_DEBUG = &H1<br>Public Const VS_FF_PRERELEASE = &H2<br>Public Const VS_FF_PATCHED = &H4<br>Public Const VS_FF_PRIVATEBUILD = &H8<br>Public Const VS_FF_INFOINFERRED = &H10<br>Public Const VS_FF_SPECIALBUILD = &H20<br><br>' ----- VS_VERSION.dwFileOS -----<br>Public Const VOS_UNKNOWN = &H0<br>Public Const VOS_DOS = &H10000<br>Public Const VOS_OS216 = &H20000<br>Public Const VOS_OS232 = &H30000<br>Public Const VOS_NT = &H40000<br><br>Public Const VOS__BASE = &H0<br>Public Const VOS__WINDOWS16 = &H1<br>Public Const VOS__PM16 = &H2<br>Public Const VOS__PM32 = &H3<br>Public Const VOS__WINDOWS32 = &H4<br><br>Public Const VOS_DOS_WINDOWS16 = &H10001<br>Public Const VOS_DOS_WINDOWS32 = &H10004<br>Public Const VOS_OS216_PM16 = &H20002<br>Public Const VOS_OS232_PM32 = &H30003<br>Public Const VOS_NT_WINDOWS32 = &H40004<br><br>' ----- VS_VERSION.dwFileType -----<br>Public Const VFT_UNKNOWN = &H0<br>Public Const VFT_APP = &H1<br>Public Const VFT_DLL = &H2<br>Public Const VFT_DRV = &H3<br>Public Const VFT_FONT = &H4<br>Public Const VFT_VXD = &H5<br>Public Const VFT_STATIC_LIB = &H7<br><br>' ----- VS_VERSION.dwFileSubtype for VFT_WINDOWS_DRV -----<br>Public Const VFT2_UNKNOWN = &H0<br>Public Const VFT2_DRV_PRINTER = &H1<br>Public Const VFT2_DRV_KEYBOARD = &H2<br>Public Const VFT2_DRV_LANGUAGE = &H3<br>Public Const VFT2_DRV_DISPLAY = &H4<br>Public Const VFT2_DRV_MOUSE = &H5<br>Public Const VFT2_DRV_NETWORK = &H6<br>Public Const VFT2_DRV_SYSTEM = &H7<br>Public Const VFT2_DRV_INSTALLABLE = &H8<br>Public Const VFT2_DRV_SOUND = &H9<br>Public Const VFT2_DRV_COMM = &HA<br><br>' **** VS_VERSION.dwFileSubtype for VFT_WINDOWS_FONT ****<br>Global Const VFT_FONT_RASTER = &H1&<br>Global Const VFT_FONT_VECTOR = &H2&<br>Global Const VFT_FONT_TRUETYPE = &H3&<br></font><br><br>Hope that helps ya. <p>Karl<br><a href=mailto:kb244@kb244.8m.com>kb244@kb244.8m.com</a><br><a href=
</a><br>Experienced in , or have messed with : VC++, Borland C++ Builder, VJ++6(starting),VB-Dos, VB1 thru VB6, Delphi 3 pro, Borland C++ 3(DOS), Borland C++ 4.5, HTML,Visual InterDev 6, ASP(WebProgramming), QBasic(least i didnt start with COBOL)