Jump to content
Sign in to follow this  
supraspecies

If WinVista or later...?

Recommended Posts

supraspecies

Hello. Im looking to make an IF statement with condition "IF WinVista OR later...". I know I can write it like:

If @OSVersion="Win_Vista" OR @OSVersion="Win_7" OR @OSVersion="Win_8"
but i don't want to do it like that. Won't be compatible with future OS.

I also don't want to make:

If NOT @OSVersion="Win_XP" OR @OSVersion="Win_XPe" OR @OSVersion="Win_2000"
because I don't want to exclude every single OS ever made. There has to be a better way.

I'm particulary interested in "or later..." part.

Hm... Maybe @OSBuild? If the build number increases with each OS, that could be a way. But I don't know that for certain.

Edited by supraspecies

Share this post


Link to post
Share on other sites
KaFu

I use this WinApiEx internal functions in all of my programs to detect the OS version.

Here's the MSDN documentation for this function.

$__WINVER = __WINVER()

if $__WINVER >= 0x0600 then ; Vista or higher
    ConsoleWrite($__WINVER & @tab & "Vista or higher" & @crlf)
Else
    ConsoleWrite($__WINVER & @tab & "Lower than Vista" & @crlf)
endif

Func __WINVER()
    Local $tOSVI = DllStructCreate('dword;dword;dword;dword;dword;wchar[128]')
    DllStructSetData($tOSVI, 1, DllStructGetSize($tOSVI))
    Local $Ret = DllCall('kernel32.dll', 'int', 'GetVersionExW', 'ptr', DllStructGetPtr($tOSVI))
    If (@error) Or (Not $Ret[0]) Then
        Return SetError(1, 0, 0)
    EndIf
    Return BitOR(BitShift(DllStructGetData($tOSVI, 2), -8), DllStructGetData($tOSVI, 3))
EndFunc ;==>__WINVER
Edited by KaFu

Share this post


Link to post
Share on other sites
supraspecies

Yes, looks like it's what I'm looking for. Thank you very much.

Share this post


Link to post
Share on other sites
guinness

Or

Func _IsWindowsVersion()
    Return RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\', 'CurrentVersion') >= 6.0
EndFunc   ;==>_IsWindowsVersion

UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Share this post


Link to post
Share on other sites
Chimaera

Or

Global $OS = _OsDetect()

Func _OsDetect()
Local $OS = 'V+'
If @OSVersion = 'WIN_2000' Or @OSVersion = 'WIN_2003' Or @OSVersion = 'WIN_XP' Or @OSVersion = 'WIN_XPe' Then
$OS = 'V-'
EndIf
;~ ConsoleWrite($OS & @CRLF)
Return $OS
EndFunc ;==>_OsDetect

The lower ones never change

Share this post


Link to post
Share on other sites
supraspecies

Or

Global $OS = _OsDetect()

Func _OsDetect()
Local $OS = 'V+'
If @OSVersion = 'WIN_2000' Or @OSVersion = 'WIN_2003' Or @OSVersion = 'WIN_XP' Or @OSVersion = 'WIN_XPe' Then
$OS = 'V-'
EndIf
;~ ConsoleWrite($OS & @CRLF)
Return $OS
EndFunc ;==>_OsDetect

The lower ones never change

True enough, but I'm just a perfectionist of sorts. What if someone tries to install my program on Win95? Win98? WinME? Win 3.11? :) Come to think of it, I'm not even sure what's gonna happen if someone tries to run an AutoIT script under these OS. Edited by supraspecies

Share this post


Link to post
Share on other sites
Chimaera

True enough, but I'm just a perfectionist of sorts. What if someone tries to install my program on Win95? Win98? WinME? Win 3.11? :) Come to think of it, I'm not even sure what's gonna happen if someone tries to run an AutoIT script under these OS.

It wouldn't be supported anyway, most of AutoIt is Windows 2000 upwards.

Share this post


Link to post
Share on other sites
guinness

Even though it isn't supported by AutoIt, it should work to a certain degree.


UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Share this post


Link to post
Share on other sites
JFX

Hm... Maybe @OSBuild? If the build number increases with each OS, that could be a way. But I don't know that for certain.

Exactly, Build nummer will increase with every windows version, usually even with every SP.

IF @OSBuild >= 6000 Then
MsgBox(0, "", "Vista or later")
EndIf

Share this post


Link to post
Share on other sites
BrewManNH

True enough, but I'm just a perfectionist of sorts. What if someone tries to install my program on Win95? Win98? WinME? Win 3.11? :) Come to think of it, I'm not even sure what's gonna happen if someone tries to run an AutoIT script under these OS.

If you have anyone still using those versions of Windows, they'll find out soon enough that it won't work for them. Why do you care that someone is using an OS from the last century? Is it your problem to try to fix the world's stupidity within your script? You can only make reasonable assumptions as far as what to check for, once you get past the desire to prevent every possible problem, you'll realize that you can only fix what is reasonable to expect.

Put a disclaimer in the code to tell whoever that it only works on Windows OSs from, for example, Vista and above, and that if they use it on anything else then it's their problem and not your's.


If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×