[a131] multi-dimensional arrays

Get help with using AutoHotkey (v2 or newer) and its commands and hotkeys
mINXZKA
Posts: 13
Joined: 16 Mar 2016, 03:47

[a131] multi-dimensional arrays

Post by mINXZKA » 16 Apr 2021, 07:12

Is this the correct way to use and work with multi-dimensional arrays in ahk_v2? (insert a map in a map?)

Code: Select all

HardwareInfo := GetHWInfo()
MsgBox(HardwareInfo["Motherboard"]["Manufacturer"] "`n" HardwareInfo["Motherboard"]["Model"])
MsgBox(HardwareInfo["BIOS"]["Manufacturer"] "`n" HardwareInfo["BIOS"]["Version"])


GetHWInfo()
{
	HWInfo := Map()

	try
	{
		Win32_BaseBoard := Map()
		for objItem in ComObjGet("winmgmts:").ExecQuery("SELECT * FROM Win32_BaseBoard")
		{
			Win32_BaseBoard["Manufacturer"] := objItem.Manufacturer
			Win32_BaseBoard["Model"]        := objItem.Product
		}
		HWInfo["Motherboard"] := Win32_BaseBoard
	}

	try
	{
		Win32_BIOS := Map()
		for objItem in ComObjGet("winmgmts:").ExecQuery("SELECT * FROM Win32_BIOS")
		{
			Win32_BIOS["Manufacturer"] := objItem.Manufacturer
			Win32_BIOS["Version"]      := objItem.SMBIOSBIOSVersion
		}
		HWInfo["BIOS"] := Win32_BIOS
	}

	return HWInfo
}

my v1 code:

Code: Select all

HardwareInfo := GetHWInfo()
MsgBox % HardwareInfo["Motherboard"]["Manufacturer"] "`n" HardwareInfo["Motherboard"]["Model"]
MsgBox % HardwareInfo["BIOS"]["Manufacturer"] "`n" HardwareInfo["BIOS"]["Version"]


GetHWInfo()
{
	HWInfo := []

	try
	{
		for objItem in ComObjGet("winmgmts:").ExecQuery("SELECT * FROM Win32_BaseBoard")
		{
			HWInfo["Motherboard", "Manufacturer"] := objItem.Manufacturer
			HWInfo["Motherboard", "Model"]        := objItem.Product
		}
	}

	try
	{
		for objItem in ComObjGet("winmgmts:").ExecQuery("SELECT * FROM Win32_BIOS")
		{
			HWInfo["BIOS", "Manufacturer"]       := objItem.Manufacturer
			HWInfo["BIOS", "Version"]            := objItem.SMBIOSBIOSVersion
		}
	}

	return HWInfo
}

User avatar
kczx3
Posts: 1640
Joined: 06 Oct 2015, 21:39

Re: [a131] multi-dimensional arrays

Post by kczx3 » 16 Apr 2021, 07:24

Does it work? If so, then probably. You could use an Object instead of a Map if you wanted though.

swagfag
Posts: 6222
Joined: 11 Jan 2017, 17:59

Re: [a131] multi-dimensional arrays

Post by swagfag » 24 Apr 2021, 18:11

its fine, idk why ud want to use case sensitive maps though

Code: Select all

#Requires AutoHotkey v2.0-a132-8673ba2f

HardwareInfo := GetHWInfo()
MsgBox(HardwareInfo.Motherboard.Manufacturer "`n" HardwareInfo.Motherboard.Model)
MsgBox(HardwareInfo.BIOS.Manufacturer "`n" HardwareInfo.BIOS.Version)


GetHWInfo()
{
	HWInfo := {}

	try
		for objItem in ComObjGet("winmgmts:").ExecQuery("SELECT * FROM Win32_BaseBoard")
			HWInfo.Motherboard := {Manufacturer: objItem.Manufacturer, Model: objItem.Product}

	try
		for objItem in ComObjGet("winmgmts:").ExecQuery("SELECT * FROM Win32_BIOS")
			HWInfo.BIOS := {Manufacturer: objItem.Manufacturer, Version: objItem.SMBIOSBIOSVersion}

	return HWInfo
}

Post Reply

Return to “Ask for Help (v2)”