怎样识别95,98,Me,NT,2000,XP这几种操作系统??并实现休眠功能??

wgku 2002-07-25 06:04:28

  怎样识别95,98,Me,NT,2000,XP这几种操作系统??并实现休眠、关机、重起、注销功能??

  我现在只能作出win9x与winNT构架系统的识别,但无法做到更细的划分,请大家帮帮忙!另外怎么知道一台机子支持休眠功能并调用它,不同的操作系统调用方法各是怎么样的??谢谢:)

  另外UP有分,给出正确可行方法的经采纳可再加100分!!
...全文
114 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
Chice_wxg 2002-07-29
  • 打赏
  • 举报
回复


来了,我就是在easthot发帖子的Chice哦~~~~~~~



多谢了。


gatesxie 2002-07-27
  • 打赏
  • 举报
回复
up
losespirit 2002-07-27
  • 打赏
  • 举报
回复
up
Chice_wxg 2002-07-27
  • 打赏
  • 举报
回复
MSDN说的:

SetSystemPowerState


Requirements
需要:
Windows NT/2000/XP: Included in Windows 2000 and later.
Windows 95/98/Me: Included in Windows 95 and later.
Header: Declared in Winbase.h; include Windows.h.
Library: Use Kernel32.lib.

支持2K和9X.




但是2K下好象需要先取得令牌(Token)(类似关机的代码)
thirdapple 2002-07-26
  • 打赏
  • 举报
回复
To Chice_wxg(VS.NET = 光驱烤肉,我也入网了)
你的那个API只对9x/Me有效啊!
--------------------------------------------------------------------
Made by Thirdapple's Studio(http://3rdapple.51.net/)
wgku 2002-07-26
  • 打赏
  • 举报
回复
UP一下也行啊。。。为什么没人来????
wgku 2002-07-26
  • 打赏
  • 举报
回复
啊。。。。。。我顶

UP
phoubes 2002-07-25
  • 打赏
  • 举报
回复


up,请再详细点好吗?
wgku 2002-07-25
  • 打赏
  • 举报
回复
UP
zyl910 2002-07-25
  • 打赏
  • 举报
回复
up
wgku 2002-07-25
  • 打赏
  • 举报
回复
TO Chice_wxg(VS.NET = 光驱烤肉,我也入网了)

能不能讲细些??谢谢:)
Chice_wxg 2002-07-25
  • 打赏
  • 举报
回复

可以用API:

BOOL SetSystemPowerState(

BOOL fSuspend,
BOOL fForce
);
thirdapple 2002-07-25
  • 打赏
  • 举报
回复
hehe,Up
chenyu5188 2002-07-25
  • 打赏
  • 举报
回复
呵呵~~好详细~!!
UP
wgku 2002-07-25
  • 打赏
  • 举报
回复
版主,你说的是??用控件??但我不想用控件的话呢??

先谢谢:)
playyuer 2002-07-25
  • 打赏
  • 举报
回复
'引用 Microsoft Shell Controls And Automation
Dim x As New Shell32.Shell
x.Suspend
wgku 2002-07-25
  • 打赏
  • 举报
回复
谢谢vbangle(vbangle)和leehq(leehq)。

我去试试。

还有,第二个问题谁能帮忙解答??9X下的关机重起,我会,休眠功能不知

NT结构系统的都做不清楚。
vbangle 2002-07-25
  • 打赏
  • 举报
回复
方法二:


Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" ( _
lpVersionInformation As OSVERSIONINFOEX) As Long
Private Const VS_FF_DEBUG = &H1&
Private Const VS_FF_INFOINFERRED = &H10&
Private Const VS_FF_PATCHED = &H4&
Private Const VS_FF_PRERELEASE = &H2&
Private Const VER_NT_SERVER = &H3
Private Const VER_NT_WORKSTATION = &H1
Private Const VER_PLATFORM_WIN32_NT = 2
Private Const VER_PLATFORM_WIN32_WINDOWS = 1
Private Const VER_PLATFORM_WIN32s = 0
Private Const VER_PLATFORMID = &H8
Private Const VER_SERVER_NT = &H80000000
Private Const VER_SUITE_DATACENTER = &H80
Private Const VER_SUITE_ENTERPRISE = &H2
Private Const VER_WORKSTATION_NT = &H40000000
Private Type OSVERSIONINFOEX
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
wServicePackMajor As Integer
wServicePackMinor As Integer
wSuiteMask As Integer
wProductType As Byte
wReserved As Byte
End Type

Public Function GetOSName() As String
Dim OSV As OSVERSIONINFOEX 'Definition of OSVERSIONINFOEX
Dim OS As String 'Temp string for OS name
OSV.dwOSVersionInfoSize = Len(OSV) 'Size of OSVERSIONINFOEX must be initialize first or OS retrival name will not be shown good
Call GetVersionEx(OSV) 'Filling OSVERSIONINFOEX with informations

Select Case OSV.dwPlatformId
Case VER_PLATFORM_WIN32_NT
If OSV.dwMajorVersion <= 4 Then OS = "Microsoft Windows NT " 'Win is NT
If OSV.dwMajorVersion = 5 And OSV.dwMinorVersion = 0 Then OS = "Microsoft Windows 2000 " 'Win is 2000
If OSV.dwMajorVersion = 5 And OSV.dwMinorVersion = 1 Then OS = "Microsoft Windows XP " 'Win is XP

If OSV.wProductType = VER_NT_WORKSTATION Then
If OSV.wSuiteMask And 256 Then
OS = OS & "Professional " ' Win is Pro Edition
Else
OS = OS & "Home Edition " 'Personal if not XP
End If
ElseIf OSV.wProductType = VER_SERVER_NT Then
If OSV.wSuiteMask And VER_SUITE_DATACENTER Then
OS = OS & "DataCenter Server " 'DataCenter Server
ElseIf OSV.wSuiteMask And VER_SUITE_ENTERPRISE Then
OS = OS & "Advanced Server " 'Advanced Server
Else
OS = OS & "Server " 'Server Only
End If
End If

Case VER_PLATFORM_WIN32_WINDOWS
If OSV.dwMajorVersion = 4 And OSV.dwMinorVersion = 0 Then
OS = "Microsoft Windows 95 " 'Win is 95
If OSV.szCSDVersion = "C" Or OSV.szCSDVersion = "B" Then OS = OS & "OSR2 " 'Win is OSR2 Edition
End If
If OSV.dwMajorVersion = 4 And OSV.dwMinorVersion = 10 Then
OS = "Microsoft Windows 98 " 'Win is 98
If OSV.szCSDVersion = "A" Then OS = OS & "SE " 'Win is Second Edition
End If
If OSV.dwMajorVersion = 4 And OSV.dwMinorVersion = 90 Then OS = "Microsoft Windows Me " 'Win is Me

Case VER_PLATFORM_WIN32s
OS = "Microsoft Win32s" 'If version cannot be retrived then it's WIN32
End Select

GetOSName = OS 'Fill main function with temp string variable

End Function
vbangle 2002-07-25
  • 打赏
  • 举报
回复
Public Declare Function GetVersionExA Lib "kernel32" (lpVersionInformation As OSVERSIONINFO) As Integer


Public Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type


Public Function GetWindowsVersion(WinVersion) As String
Dim OSInfo As OSVERSIONINFO
Dim RetAs Integer
OSInfo.dwOSVersionInfoSize = 148
OSInfo.szCSDVersion = Space$(128)
Ret = GetVersionExA(OSInfo)


With OSInfo


Select Case .dwPlatformId
Case 1


If .dwMinorVersion < 10 Then


If .dwBuildNumber = 950 Then
WinVersion = "Windows 95"
ElseIf .dwBuildNumber > 950 Or .dwBuildNumber <= 1080 Then
WinVersion = "Windows 95 SP1"
Else
WinVersion = "Windows 95 OSR2"
End If
ElseIf .dwMinorVersion = 10 Then


If .dwBuildNumber = 1998 Then
WinVersion = "Windows 98"
ElseIf .dwBuildNumber > 1998 Or .dwBuildNumber < 2183 Then
WinVersion = "Windows 98 SP1"
ElseIf .dwBuildNumber >= 2183 Then
WinVersion = "Windows 98 SE"
End If
Else
WinVersion = "Windows ME"
End If
Case 2


If .dwMajorVersion = 3 Then
WinVersion = "Windows NT 3.51"
ElseIf .dwMajorVersion = 4 Then
WinVersion = "Windows NT 4.0"
ElseIf .dwMajorVersion = 5 Then


If .dwMinorVersion = 0 Then
WinVersion = "Windows 2000"
Else
WinVersion = "Windows XP"
End If
End If
Case 3


If .dwMajorVersion = 1 Then
WinVersion = "Windows CE 1.0"
ElseIf .dwMajorVersion = 2 Then


If .dwMinorVersion = 0 Then
WinVersion = "Windows CE 2.0"
Else
WinVersion = "Windows CE 2.1"
End If
Else
WinVersion = "Windows CE 3.0"
End If
Case Else
WinVersion = "Unable To Get Windows Version"
End Select
End With
End Function
leehq 2002-07-25
  • 打赏
  • 举报
回复
你去看看msdn里OSVERSIONINFO结构的解释就知道了!
加载更多回复(3)

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧