Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations SkipVought on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

How to know OS version

Status
Not open for further replies.

cjardon

Programmer
Sep 3, 1999
8
0
0
ES
who's the api or function to know which version of S0 it's running (NT,W95,W98,W2000).<br><br>Thanks.
 
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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dim msg As String&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' Status information.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dim nl As String&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' New-line.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nl = Chr$(13) + Chr$(10)&nbsp;&nbsp;' New-line.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dim ret As Long<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dim ver_major As Long<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dim ver_minor As Long<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dim build As Long<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg = &quot;&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#If Win32 Then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' Get operating system and version.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dim verinfo As OSVERSIONINFO<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;verinfo.dwOSVersionInfoSize = Len(verinfo)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret = GetVersionEx(verinfo)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If ret = 0 Then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetSysInfo = False<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exit Function<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End If<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Select Case verinfo.dwPlatformId<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case 0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg = msg + &quot;Windows 32s &quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case 1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg = msg + &quot;Windows 9x &quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case 2<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg = msg + &quot;Windows NT &quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End Select<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ver_major = verinfo.dwMajorVersion<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ver_minor = verinfo.dwMinorVersion<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;build = verinfo.dwBuildNumber<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg = msg + vbNullChar + CStr(ver_major) + &quot;.&quot; + CStr(ver_minor)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg = msg + vbNullChar + CStr(build)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' Get CPU type and operating mode.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dim sysinfo As SYSTEM_INFO<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetSystemInfo sysinfo<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Select Case sysinfo.dwProcessorType<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case PROCESSOR_INTEL_386<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg = msg + vbNullChar + &quot;Intel 386&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case PROCESSOR_INTEL_486<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg = msg + vbNullChar + &quot;Intel 486&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case PROCESSOR_INTEL_PENTIUM<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg = msg + vbNullChar + &quot;Intel Pentium&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case PROCESSOR_MIPS_R4000<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg = msg + vbNullChar + &quot;MIPS R4000&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case PROCESSOR_ALPHA_21064<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg = msg + vbNullChar + &quot;DEC Alpha 21064&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Case Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg = msg + vbNullChar + &quot;(unknown)&quot;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End Select<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' Get free memory.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dim memsts As MEMORYSTATUS<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dim memory&<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GlobalMemoryStatus memsts<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memory& = memsts.dwTotalPhys<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'msg = msg + &quot;Total Physical Memory: &quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg = msg + vbNullChar + Format$(memory& \ 1024, &quot;###,###,###&quot;) + &quot;K&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memory& = memsts.dwAvailPhys<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'msg = msg + &quot;Available Physical Memory: &quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg = msg + vbNullChar + Format$(memory& \ 1024, &quot;###,###,###&quot;) + &quot;K&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memory& = memsts.dwTotalVirtual<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'msg = msg + &quot;Total Virtual Memory: &quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg = msg + vbNullChar + Format$(memory& \ 1024, &quot;###,###,###&quot;) + &quot;K&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memory& = memsts.dwAvailVirtual<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'msg = msg + &quot;Available Virtual Memory: &quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg = msg + vbNullChar + Format$(memory& \ 1024, &quot;###,###,###&quot;) + &quot;K&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' Get free system resources.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' Not applicable to 32-bit operating system (Windows NT).<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' Get operating system and version.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ver& = GetVersion()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Status& = GetWinFlags()<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If Status& And WF_WINNT Then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg = msg + vbNullChar + &quot;Microsoft Windows NT &quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg = msg + vbNullChar + &quot;Microsoft Windows &quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End If<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ver_major$ = Format$(ver& And &HFF)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ver_minor$ = Format$((ver& And &HFF00) \ &H100, &quot;00&quot;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg = msg + vbNullChar + ver_major$ + &quot;.&quot; + ver_minor$<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' Get CPU type and operating mode.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If Status& And WF_CPU286 Then msg = msg + vbNullChar + &quot;80286&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If Status& And WF_CPU386 Then msg = msg + vbNullChar + &quot;80386&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If Status& And WF_CPU486 Then msg = msg + vbNullChar + &quot;80486&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If Status& And WF_80x87 Then msg = msg + vbNullChar + &quot; with 80x87&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'msg = msg + &quot;Mode: &quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If Status& And WF_STANDARD Then msg = msg + vbNullChar + &quot;Standard&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If Status& And WF_ENHANCED Then msg = msg + vbNullChar + &quot;Enhanced&quot;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' Get free memory.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memory& = GetFreeSpace(0)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'msg = msg + &quot;Memory free: &quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg = msg + vbNullChar + Format$(memory& \ 1024, &quot;###,###,###&quot;) + &quot;K&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memory& = GlobalCompact(&HFFFFFFFF)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'msg = msg + &quot;Largest free block: &quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg = msg + vbNullChar + Format$(memory& \ 1024, &quot;###,###,###&quot;) + &quot;K&quot; + nl<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' Get free system resources.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' The SystemHeapInfo API function became available in Windows<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;&nbsp;version 3.1.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'msg = msg + &quot;System resources: &quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If ver& &gt;= &H310 Then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dim shi As SYSHEAPINFO<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shi.dwSize = Len(shi)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If SystemHeapInfo(shi) Then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If shi.wUserFreePercent &lt; shi.wGDIFreePercent Then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg = msg + vbNullChar + Format$(shi.wUserFreePercent) + &quot;%&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg = msg + vbNullChar + Format$(shi.wGDIFreePercent) + &quot;%&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End If<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End If<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;msg = msg + vbNullChar + &quot;n/a&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End If<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#End If<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reply = msg<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetSysInfo = True<br>End Function<br><b> the API declarations to be placed somewhere like a Module</b><br>&nbsp;&nbsp;&nbsp;#If Win32 Then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type SYSTEM_INFO<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwOemID As Long<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwPageSize As Long<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lpMinimumApplicationAddress As Long<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lpMaximumApplicationAddress As Long<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwActiveProcessorMask As Long<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwNumberOrfProcessors As Long<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwProcessorType As Long<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwAllocationGranularity As Long<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwReserved As Long<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End Type<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type OSVERSIONINFO<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwOSVersionInfoSize As Long<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwMajorVersion As Long<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwMinorVersion As Long<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwBuildNumber As Long<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwPlatformId As Long<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;szCSDVersion As String * 128<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End Type<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type MEMORYSTATUS<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwLength As Long<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwMemoryLoad As Long<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwTotalPhys As Long<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwAvailPhys As Long<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwTotalPageFile As Long<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwAvailPageFile As Long<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwTotalVirtual As Long<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwAvailVirtual As Long<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End Type<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Declare Function GetVersionEx Lib &quot;kernel32&quot; Alias &quot;GetVersionExA&quot; _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(LpVersionInformation As OSVERSIONINFO) As Long<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Declare Sub GlobalMemoryStatus Lib &quot;kernel32&quot; (lpBuffer As _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MEMORYSTATUS)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Declare Sub GetSystemInfo Lib &quot;kernel32&quot; (lpSystemInfo As _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SYSTEM_INFO)<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Public Const PROCESSOR_INTEL_386 = 386<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Public Const PROCESSOR_INTEL_486 = 486<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Public Const PROCESSOR_INTEL_PENTIUM = 586<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Public Const PROCESSOR_MIPS_R4000 = 4000<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Public Const PROCESSOR_ALPHA_21064 = 21064<br>&nbsp;&nbsp;&nbsp;#Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' Constants for GetWinFlags.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Global Const WF_CPU286 = &H2<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Global Const WF_CPU386 = &H4<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Global Const WF_CPU486 = &H8<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Global Const WF_80x87 = &H400<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Global Const WF_STANDARD = &H10<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Global Const WF_ENHANCED = &H20<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Global Const WF_WINNT = &H4000<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' Type for SystemHeapInfo.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type SYSHEAPINFO<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dwSize As Long<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wUserFreePercent As Integer<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wGDIFreePercent As Integer<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hUserSegment As Integer<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hGDISegment As Integer<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;End Type<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Declare Function GetVersion Lib &quot;kernel&quot; () As Long<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Declare Function GetWinFlags Lib &quot;kernel&quot; () As Long<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'Enter each of the following Declare statements as one, single line:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Declare Function GetFreeSpace Lib &quot;kernel&quot; (ByVal wFlags As Integer) As Long<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Declare Function GlobalCompact Lib &quot;kernel&quot; _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(ByVal dwMinFree As Long) As Long<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Declare Function SystemHeapInfo Lib &quot;toolhelp.dll&quot; _<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(shi As SYSHEAPINFO) As Integer<br>&nbsp;&nbsp;&nbsp;#End If<br>' **** Global variables used in both forms ****<br><br>Type VS_FIXEDFILEINFO<br>&nbsp;&nbsp;&nbsp;dwSignature As Long<br>&nbsp;&nbsp;&nbsp;dwStrucVersionl As Integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;&nbsp;e.g. = &h0000 = 0<br>&nbsp;&nbsp;&nbsp;dwStrucVersionh As Integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;&nbsp;e.g. = &h0042 = .42<br>&nbsp;&nbsp;&nbsp;dwFileVersionMSl As Integer&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;&nbsp;e.g. = &h0003 = 3<br>&nbsp;&nbsp;&nbsp;dwFileVersionMSh As Integer&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;&nbsp;e.g. = &h0075 = .75<br>&nbsp;&nbsp;&nbsp;dwFileVersionLSl As Integer&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;&nbsp;e.g. = &h0000 = 0<br>&nbsp;&nbsp;&nbsp;dwFileVersionLSh As Integer&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;&nbsp;e.g. = &h0031 = .31<br>&nbsp;&nbsp;&nbsp;dwProductVersionMSl As Integer '&nbsp;&nbsp;e.g. = &h0003 = 3<br>&nbsp;&nbsp;&nbsp;dwProductVersionMSh As Integer '&nbsp;&nbsp;e.g. = &h0010 = .1<br>&nbsp;&nbsp;&nbsp;dwProductVersionLSl As Integer '&nbsp;&nbsp;e.g. = &h0000 = 0<br>&nbsp;&nbsp;&nbsp;dwProductVersionLSh As Integer '&nbsp;&nbsp;e.g. = &h0031 = .31<br>&nbsp;&nbsp;&nbsp;dwFileFlagsMask As Long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;&nbsp;= &h3F for version &quot;0.42&quot;<br>&nbsp;&nbsp;&nbsp;dwFileFlags As Long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;&nbsp;e.g. VFF_DEBUG Or VFF_PRERELEASE<br>&nbsp;&nbsp;&nbsp;dwFileOS As Long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;&nbsp;e.g. VOS_DOS_WINDOWS16<br>&nbsp;&nbsp;&nbsp;dwFileType As Long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;&nbsp;e.g. VFT_DRIVER<br>&nbsp;&nbsp;&nbsp;dwFileSubtype As Long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;&nbsp;e.g. VFT2_DRV_KEYBOARD<br>&nbsp;&nbsp;&nbsp;dwFileDateMS As Long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;&nbsp;e.g. 0<br>&nbsp;&nbsp;&nbsp;dwFileDateLS As Long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;&nbsp;e.g. 0<br>End Type<br><br>Declare Function GetFileVersionInfo Lib _<br>&nbsp;&nbsp;&nbsp;&quot;Version.dll&quot; Alias &quot;GetFileVersionInfoA&quot; _<br>&nbsp;&nbsp;&nbsp;(ByVal lptstrFilename As String, ByVal dwhandle As Long, ByVal dwlen As Long, lpData As Any) _<br>&nbsp;&nbsp;&nbsp;As Long<br>Declare Function GetFileVersionInfoSize Lib _<br>&nbsp;&nbsp;&nbsp;&quot;Version.dll&quot; Alias &quot;GetFileVersionInfoSizeA&quot; _<br>&nbsp;&nbsp;&nbsp;(ByVal lptstrFilename As String, lpdwHandle As Long) _<br>&nbsp;&nbsp;&nbsp;As Long<br>Declare Function VerQueryValue Lib _<br>&nbsp;&nbsp;&nbsp;&quot;Version.dll&quot; Alias &quot;VerQueryValueA&quot; _<br>&nbsp;&nbsp;&nbsp;(pBlock As Any, ByVal lpSubBlock As String, lplpBuffer As Any, puLen As Long) _<br>&nbsp;&nbsp;&nbsp;As Long<br>Declare Sub MoveMemory Lib _<br>&nbsp;&nbsp;&nbsp;&quot;kernel32&quot; Alias &quot;RtlMoveMemory&quot; _<br>&nbsp;&nbsp;&nbsp;(dest As Any, ByVal source As Long, ByVal Length As Long)<br>Declare Function GetSystemDirectory Lib _<br>&nbsp;&nbsp;&nbsp;&quot;kernel32&quot; Alias &quot;GetSystemDirectoryA&quot; _<br>&nbsp;&nbsp;&nbsp;(ByVal path As String, ByVal cbBytes As Long) _<br>&nbsp;&nbsp;&nbsp;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)
 
another thing, the varient you pass in, when the thing returns a true, the variant should then become a Variant string<br>use <br>SomeVariant = Split(TheVariant, vbnullchar)<br><br>to break it into a Variant array, then you can loop through it like so<br><br>for j = LBound(SomeVariant) to UBound(SomeVariant)<br>&nbsp;&nbsp;MsgBox SomeVariant(j)<br>next j<br><br>something like that. <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)
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top