VB 检测当前系统是否为windows8 不是则不能运行

做了个程序 是win8专用的 其他系统没有意义 所以想做个这功能 运行后检测当前系统是否为windows8 不是则提示不能运行 求代码

'*** 获取操作系统版本的模块部分
Public Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long
Public Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformID As Long
szCSDVersion As String * 128
End Type

'以下可以放入窗体 当然也可以在其它地方
Private Sub Form_Load()
Dim A As String, V As OSVERSIONINFO
On Error Resume Next
V.dwOSVersionInfoSize = 148
V.szCSDVersion = Space(128)
A = GetVersionEx(V)
Select Case V.dwPlatformID
Case 0: OpSys = "Windows 3.X"
Case 1: OpSys = "Windows 98"
Case 2: OpSys = "Windows NT"
End Select
If V.dwMajorVersion = 5 Then OpSys = "Windows XP " & RTrim(V.szCSDVersion)
If V.dwMajorVersion > 5 Then OpSys = "Windows7"
End Sub追问

调试不能通过 没意义 什么都没有

追答

不会啊 我怎么在自己的机器上调试通过了 我是vb6.0企业版本
你提示缺什么控件??

追问

什么都没提示 跟没有添加一样 我说的是 程序只能在win8 下运行 其它系统则提示不能运行 谢谢

追答

我这个就是判断操作系统用的 我写的好些程序都用这个
我现在的系统是winxp win7下没有问题 win8没有安装 步真的是什么结果 应该和win7一样能用吧

'我是通过判断NT系统版本来识别系统的 XP是NT5.1 这个可以通过运行WINVER看到系统版本 也可以运行CMD /K VER看 据查 win7为nt7.0 win8为 nt6.2
If V.dwMajorVersion = 5 Then OpSys = "Windows XP"
If V.dwMajorVersion > 6 Then OpSys = "Windows 8"
If V.dwMajorVersion > 7 Then OpSys = "Windows7"

如果是没有意义的 应该有错误提示啊
你单步跟踪 看看每步都显示什么 也可以在跟踪的时候看变量的值 鼠标移动到变量上方就有显示的
OpSys 就是输出的结果 这个在运行程序的时候是没有提示的 我是给你自己在软件里添加代码用的 难道你不会看代码???

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-08-09
可以用一下代码得到系统版本等信息
Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformID As Long
szCSDVersion As String * 128
End Type
Public OsName$, TmpStr$, Ary
Private Sub Form_Activate()
Ary = Array("", "Windows 95", "Windows 98", "Windows Me", "Windows NT4.0", "Windows 2000", "Windows XP", "Windows 2003", "Windows Vista", "Windows 7")
MsgBox "您的操作系统是:" & Ary(GetVersion)
End Sub
Public Function GetVersion() As Long
Dim OSInfo As OSVERSIONINFO
Call GetVersionEx(OSInfo)
OSInfo.dwOSVersionInfoSize = 148
OSInfo.szCSDVersion = Space(128)
Call GetVersionEx(OSInfo)
Select Case OSInfo.dwPlatformID
Case VER_PLATFORM_WIN32s
OsName = "Windows 3.1"
Case VER_PLATFORM_WIN32_WINDOWS
OsName = "Windows 98"
Case VER_PLATFORM_WIN32_NT
OsName = "Windows NT"
End Select
TmpStr = OsName & "(" & OSInfo.dwMajorVersion & "." & OSInfo.dwMinorVersion & ")"
If InStr(TmpStr$, "95") Then GetVersion = 1: Exit Function
If InStr(TmpStr$, "98") Then GetVersion = 2: Exit Function
If InStr(TmpStr$, "Me") Then GetVersion = 3: Exit Function
If InStr(TmpStr$, "4.0") Then GetVersion = 4: Exit Function
If InStr(TmpStr$, "5.0") Then GetVersion = 5: Exit Function
If InStr(TmpStr$, "5.1") Then GetVersion = 6: Exit Function
If InStr(TmpStr$, "5.2") Then GetVersion = 7: Exit Function
If InStr(TmpStr$, "6.0") Then GetVersion = 8: Exit Function
If InStr(TmpStr$, "6.1") Then GetVersion = 9
End Function
第2个回答  2012-08-09
Option Explicit
Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 ' Maintenance string for PSS usage
End Type

Private Sub Command1_Click()
Dim ver As OSVERSIONINFO
ver.dwOSVersionInfoSize = 148
GetVersionEx ver
Print ver.dwMajorVersion, ver.dwMinorVersion
End Sub

【注释】
win7的核心版本是6.1=========我的是win7打印的是6 1
win8的核心版本是6.1==========检测打印的是不是6 2就确定是不是win8了

【具体版本号上百度百科,以windows为关键词,看看所有版本操作系统核心版本就行了】
第3个回答  2012-08-10
如果要求不是很严格,用Environ$("OS")返回环境变量也能识别系统。
相似回答