home *** CD-ROM | disk | FTP | other *** search
/ Dan Appleman's Visual Bas…s Guide to the Win32 API / Dan.Applmans.Visual.Basic.5.0.Programmers.Guide.To.The.Win32.API.1997.Ziff-Davis.Press.CD / VB5PG32.mdf / vbpg32 / samples4 / ch13 / filedemo.bas < prev    next >
Encoding:
BASIC Source File  |  1997-02-16  |  5.2 KB  |  91 lines

  1. Attribute VB_Name = "FILEDEMO1"
  2. Option Explicit
  3. ' Copyright ⌐ 1997 by Desaware Inc. All Rights Reserved
  4.  
  5. #If Win32 Then
  6. Declare Function GetFileVersionInfoSize Lib "version.dll" Alias "GetFileVersionInfoSizeA" (ByVal lptstrFilename As String, lpdwHandle As Long) As Long
  7. Declare Function GetFileVersionInfo Lib "version.dll" Alias "GetFileVersionInfoA" (ByVal lptstrFilename As String, ByVal dwHandle As Long, ByVal dwLen As Long, lpData As Byte) As Long
  8. Declare Function VerLanguageName Lib "version.dll" Alias "VerLanguageNameA" (ByVal wLang As Long, ByVal szLang As String, ByVal nSize As Long) As Long
  9. Declare Function VerQueryValue Lib "version.dll" Alias "VerQueryValueA" (pBlock As Byte, ByVal lpSubBlock As String, lplpBuffer As Long, puLen As Long) As Long
  10. Declare Function GetProfileString Lib "kernel32" Alias "GetProfileStringA" (ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long) As Long
  11. Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
  12. Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
  13. Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
  14. Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
  15. Declare Function RegEnumKey Lib "advapi32.dll" Alias "RegEnumKeyA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpname As String, ByVal cbName As Long) As Long
  16. Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpname As String, lpcbName As Long, ByVal lpReserved As Long, ByVal lpClass As String, lpcbClass As Long, lpftLastWriteTime As FILETIME) As Long
  17. #Else
  18. Declare Function GetFileVersionInfo% Lib "ver.dll" (ByVal lpszFileName$, ByVal handle&, ByVal cbBuf&, lpvData As Byte)
  19. Declare Function GetFileVersionInfoSize% Lib "ver.dll" (ByVal lpszFileName$, lpdwHandle&)
  20. Declare Function VerLanguageName% Lib "ver.dll" (ByVal Lang%, ByVal lpszLang$, ByVal cbLang%)
  21. Declare Function VerQueryValue% Lib "ver.dll" (lpvBlock As Byte, ByVal SubBlock$, lpBuffer&, lpcb%)
  22. Declare Function GetProfileString% Lib "Kernel" (ByVal lpAppName$, ByVal lpKeyName As String, ByVal lpDefault$, ByVal lpReturnedString$, ByVal nSize%)
  23. #End If
  24.  
  25. '----------------------------------------------
  26. '
  27. '   Public Constants
  28.  
  29. Public Const VFT_UNKNOWN = &H0&
  30. Public Const VFT_APP = &H1&
  31. Public Const VFT_DLL = &H2&
  32. Public Const VFT_DRV = &H3&
  33. Public Const VFT_FONT = &H4&
  34. Public Const VFT_VXD = &H5&
  35. Public Const VFT_STATIC_LIB = &H7&
  36.  
  37. Public Type VS_FIXEDFILEINFO
  38.         dwSignature As Long
  39.         dwStrucVersion As Long         '  e.g. 0x00000042 = "0.42"
  40.         dwFileVersionMS As Long        '  e.g. 0x00030075 = "3.75"
  41.         dwFileVersionLS As Long        '  e.g. 0x00000031 = "0.31"
  42.         dwProductVersionMS As Long     '  e.g. 0x00030010 = "3.10"
  43.         dwProductVersionLS As Long     '  e.g. 0x00000031 = "0.31"
  44.         dwFileFlagsMask As Long        '  = 0x3F for version "0.42"
  45.         dwFileFlags As Long            '  e.g. VFF_DEBUG Or VFF_PRERELEASE
  46.         dwFileOS As Long               '  e.g. VOS_DOS_WINDOWS16
  47.         dwFileType As Long             '  e.g. VFT_DRIVER
  48.         dwFileSubtype As Long          '  e.g. VFT2_DRV_KEYBOARD
  49.         dwFileDateMS As Long           '  e.g. 0
  50.         dwFileDateLS As Long           '  e.g. 0
  51. End Type
  52.  
  53. Public Type FILETIME
  54.         dwLowDateTime As Long
  55.         dwHighDateTime As Long
  56. End Type
  57.  
  58. Public Const HKEY_CLASSES_ROOT = &H80000000
  59. Public Const HKEY_CURRENT_USER = &H80000001
  60. Public Const HKEY_LOCAL_MACHINE = &H80000002
  61. Public Const HKEY_USERS = &H80000003
  62. Public Const HKEY_PERFORMANCE_DATA = &H80000004
  63.  
  64. Public Const SYNCHRONIZE = &H100000
  65. Public Const STANDARD_RIGHTS_READ = &H20000
  66. Public Const STANDARD_RIGHTS_WRITE = &H20000
  67. Public Const STANDARD_RIGHTS_EXECUTE = &H20000
  68. Public Const STANDARD_RIGHTS_REQUIRED = &HF0000
  69. Public Const STANDARD_RIGHTS_ALL = &H1F0000
  70. Public Const KEY_QUERY_VALUE = &H1
  71. Public Const KEY_SET_VALUE = &H2
  72. Public Const KEY_CREATE_SUB_KEY = &H4
  73. Public Const KEY_ENUMERATE_SUB_KEYS = &H8
  74. Public Const KEY_NOTIFY = &H10
  75. Public Const KEY_CREATE_LINK = &H20
  76. Public Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))
  77. Public Const KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))
  78. Public Const KEY_EXECUTE = (KEY_READ)
  79. Public Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))
  80. Public Const ERROR_SUCCESS = 0&
  81.  
  82. '-------------------------------------------------
  83. '
  84. '   Public Variables
  85. '
  86. ' We changed this to Byte to prevent the string
  87. ' mangling of the buffer
  88. Public verbuf() As Byte      ' Version buffer
  89. Public FileName$    ' Current file to examine
  90.  
  91.