Snippets ( Hardware Information )

From AutoIt Wiki
Jump to navigation Jump to search

Please always credit an author in your script if you use their code. It is only polite.


_ComputerNameAndModel

Author: guinness








; Can return nothing relevant if machine is not a factory build
Global $aArray = _ComputerNameAndModel() ; Returns an Array with 2 indexes.
MsgBox(64, "_ComputerNameAndModel()", 'The Product is a "' & $aArray[0] & '" and the Serial Number is "' & $aArray[1] & '".')

Func _ComputerNameAndModel()
    Local $aReturn[2] = ["(Unknown)", "(Unknown)"], $oColItems, $oWMIService

    $oWMIService = ObjGet("winmgmts:\\.\root\cimv2")
    $oColItems = $oWMIService.ExecQuery("Select * From Win32_ComputerSystemProduct", "WQL", 0x30)
    If IsObj($oColItems) Then
        For $oObjectItem In $oColItems
            $aReturn[0] = $oObjectItem.Name
            $aReturn[1] = $oObjectItem.IdentifyingNumber
        Next
        Return $aReturn
    EndIf
    Return SetError(1, 0, $aReturn)
EndFunc   ;==>_ComputerNameAndModel

Return To Contents

_GetComputerModel

Author: guinness








; Can return nothing relevant if machine is not a factory build
ConsoleWrite(_GetComputerModel() & @CRLF)

Func _GetComputerModel()
    Local $oWMIService = ObjGet("winmgmts:\\.\")

    Local $oColItems = $oWMIService.ExecQuery("Select * From Win32_ComputerSystem", "WQL", 0x30)
	Local $sDescription

    If IsObj($oColItems) Then
        For $oObjectItem In $oColItems
            $sDescription &= $oObjectItem.Model
        Next

        Return $sDescription
    EndIf

    Return SetError(1, 1, 0)
EndFunc   ;==>_GetComputerModel

Return To Contents

_GetComputerModel_2

Author: rindeal







Faster version of the snippet above


; Can return nothing relevant if machine is not a factory build
ConsoleWrite(_GetComputerModel() & @CRLF)

Func _GetComputerModel()
	Return RegRead("HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\BIOS", "SystemProductName")
EndFunc   ;==>_GetComputerModel

Return To Contents

_GetDriveBusType

Author: guinness








#include <APIConstants.au3>
#include <WinAPIEx.au3>

Local $aDrive = DriveGetDrive('ALL')
For $i = 1 To $aDrive[0]
	ConsoleWrite(StringUpper($aDrive[$i]) & ' => ' & _GetDriveBusType($aDrive[$i]) & @CRLF)
Next

; Get a string representation of a drive's bus type.
Func _GetDriveBusType($sDrive)
	Local $aArray[14][2] = [[$DRIVE_BUS_TYPE_UNKNOWN, 'UNKNOWN'], _
			[$DRIVE_BUS_TYPE_SCSI, 'SCSI'], _
			[$DRIVE_BUS_TYPE_ATAPI, 'ATAPI'], _
			[$DRIVE_BUS_TYPE_ATA, 'ATA'], _
			[$DRIVE_BUS_TYPE_1394, '1394'], _
			[$DRIVE_BUS_TYPE_SSA, 'SSA'], _
			[$DRIVE_BUS_TYPE_FIBRE, 'FIBRE'], _
			[$DRIVE_BUS_TYPE_USB, 'USB'], _
			[$DRIVE_BUS_TYPE_RAID, 'RAID'], _
			[$DRIVE_BUS_TYPE_ISCSI, 'ISCSI'], _
			[$DRIVE_BUS_TYPE_SAS, 'SAS'], _
			[$DRIVE_BUS_TYPE_SATA, 'SATA'], _
			[$DRIVE_BUS_TYPE_SD, 'SD'], _
			[$DRIVE_BUS_TYPE_MMC, 'MMC']]
	Local $iDriveType = _WinAPI_GetDriveBusType($sDrive)
	If @error Then
		Return $aArray[0][1]
	EndIf
	Return $aArray[$iDriveType][1]
EndFunc   ;==>_GetDriveBusType

Return To Contents

_GetUnusedDrives

Author: guinness








#include <Array.au3>

;~ Retrieve unused drive letters.
Local $aDrives = _GetUnusedDrives()
_ArrayDisplay($aDrives)

Func _GetUnusedDrives()
	Local $sReturn = 'B:|C:|D:|E:|F:|G:|H:|I:|J:|K:|L:|M:|N:|O:|P:|Q:|R:|S:|T:|U:|V:|W:|X:|Y:|Z:|'
	Local $aArray = DriveGetDrive('ALL')
	If @error Then
		Local $aError = [0]
		$aArray = $aError
		$aError = 0
	EndIf

	For $i = 1 To $aArray[0]
		$sReturn = StringReplace($sReturn, $aArray[$i] & '|', '')
	Next
	Return StringSplit(StringTrimRight($sReturn, StringLen('|')), '|')
EndFunc   ;==>_GetUnusedDrives

Return To Contents

_IsSubst

Author: guinness







Checks if a drive is a subst drive.


#include <WinAPIEx.au3>

ConsoleWrite(_IsSubst(@HomeDrive) & @CRLF)

; Checks if a drive is a subst drive.
Func _IsSubst($sDrive)
    Return _WinAPI_PathIsDirectory(StringReplace(_WinAPI_QueryDosDevice(StringLeft($sDrive, 1) & ":"), "\??\", ""))
EndFunc   ;==>_IsSubst

Return To Contents

_IsTrueCrypt

Author: guinness







Check if a drive is a TrueCrypt drive.


#include <WinAPIEx.au3>

ConsoleWrite("Is " & @HomeDrive & "\ a TrueCrypt drive?: " & _IsTrueCrypt(@HomePath) & @CRLF)

; Check if a drive is a TrueCrypt drive.
Func _IsTrueCrypt($sDrive)
    Return StringInStr(_WinAPI_QueryDosDevice(StringLeft($sDrive, StringLen('A')) & ':'), 'TrueCrypt') > 0
EndFunc   ;==>_IsTrueCrypt

Return To Contents

_MonitorToggle

Author: greenmachine







Toggle Monitor On/Off.


#include <SendMessage.au3>
#include <WindowsConstants.au3>

_MonitorToggle(1)
Sleep(1000)
_MonitorToggle(0)

; Toggle Monitor On/Off.
Func _MonitorToggle($iTurnOff = 1)
	Local $hWnd = WinGetHandle("[CLASS:Progman]"), $SC_MONITORPOWER = 61808
	If $iTurnOff Then
		Return _SendMessage($hWnd, $WM_SYSCOMMAND, $SC_MONITORPOWER, 2)
	Else
		Return _SendMessage($hWnd, $WM_SYSCOMMAND, $SC_MONITORPOWER, -1)
	EndIf
EndFunc   ;==>_MonitorToggle

Return To Contents

_GetTotalScreenResolution

Author: LarryDalooza




Modified: BrettF





 Global Const $aTSR = _GetTotalScreenResolution()

 MsgBox(0, "Total Screen Resolution", "Width = " & $aTSR[0] & @TAB & "Height = " & $aTSR[1])

 Func _GetTotalScreenResolution()
     Local Const $SM_VIRTUALWIDTH = 78
     Local Const $VirtualDesktopWidth = DllCall("user32.dll", "int", "GetSystemMetrics", "int", $SM_VIRTUALWIDTH)

     Local Const $SM_VIRTUALHEIGHT = 79
     Local Const $VirtualDesktopHeight = DllCall("user32.dll", "int", "GetSystemMetrics", "int", $SM_VIRTUALHEIGHT)

     Local Const $aRet[2] = [$VirtualDesktopWidth[0], $VirtualDesktopHeight[0]]

     Return $aRet
 EndFunc

Return To Contents