http://www.codesnippet.cn/detail/10112012251.htmlpackage main
import (
\"syscall\"
\"unsafe\"
\"strconv\"
)
type OSVERSIONINFO
struct
{
dwOSVersionInfoSize int32
dwMajorVersion int32
dwMinorVersion int32
dwBuildNumber int32
dwPlatformId int32
szCSDVersion [128]byte
}
func main(){
ShowMessage(\"操作系统版本\",GetOsVersion());
}
func IntPtr(n
int
) uintptr {
return
uintptr(n);
}
func StrPtr(s string) uintptr {
return
uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(s)));
}
func ShowMessage(title string,text string) {
user32 := syscall.NewLazyDLL(\"user32.dll\");
MessageBoxW := user32.NewProc(\"MessageBoxW\");
MessageBoxW.Call(IntPtr(0),StrPtr(text),StrPtr(title),IntPtr(0));
}
func GetOsVersion() string {
var version string = \"Unknown Version\";
kernel32 := syscall.NewLazyDLL(\"kernel32.dll\");
var os OSVERSIONINFO;
os.dwOSVersionInfoSize = int32(unsafe.Sizeof(os));
GetVersionExA := kernel32.NewProc(\"GetVersionExA\");
rt,_,_ := GetVersionExA.Call(uintptr(unsafe.Pointer(&os)));
if
int
(rt)==1 {
switch
{
case
os.dwMajorVersion==4 && os.dwMinorVersion==0 && os.dwPlatformId==1:
version = \"Windows 95\";
break
;
case
os.dwMajorVersion==4 && os.dwMinorVersion==10:
version = \"Windows 98\";
break
;
case
os.dwMajorVersion==4 && os.dwMinorVersion==90:
version = \"Windows Me\";
break
;
case
os.dwMajorVersion==4 && os.dwMinorVersion==0 && os.dwPlatformId==2:
version = \"Windows NT4\";
break
;
case
os.dwMajorVersion==5 && os.dwMinorVersion==0:
version = \"Windows 2000\";
break
;
case
os.dwMajorVersion==5 && os.dwMinorVersion==1:
version = \"Windows XP\";
break
;
case
os.dwMajorVersion==5 && os.dwMinorVersion==2:
version = \"Windows 2003\";
break
;
case
os.dwMajorVersion==6 && os.dwMinorVersion==0:
version = \"Windows Vista\";
break
;
default
:
version = \"Windows 7\";
break
;
}
version = version + \" Build(\"+strconv.FormatInt(int64(os.dwBuildNumber),10)+\") \" + string(os.szCSDVersion[0:]);
}
return
version;
}
沒有留言:
張貼留言