Page 1 of 1
Write to one MsgBox
Posted: 17 Jun 2021, 17:12
by Ecimeric
Code: Select all
RegKeys =
(
exist;HKLM\SYSTEM\CurrentControlSet\Services\bthserv;1
disabled;HKLM\SYSTEM\CurrentControlSet\Services\bthserv;Start
)
RegKeysArray := []
Loop, Parse, RegKeys, `n
RegKeysArray.Push(StrSplit(A_LoopField, ";"))
for index, element in RegKeysArray {
RegRead, RegValue, % element.2, % element.3
if (element.1 = "exist") {
if ErrorLevel {
RegValue := % element.2 "\" element.3
MsgBox, 262208, , % RegValue " does not exist."
}
} else if (element.1 = "disabled") {
if (RegValue != 4) {
RegValue := % element.2
MsgBox, 262208, , % RegValue " is not disabled."
}
}
}
How can I write to one
MsgBox instead of (potentially) two?
Re: Write to one MsgBox
Posted: 17 Jun 2021, 17:24
by mikeyww
Instead of showing the MsgBox, assign a variable to the string that you want to show. At the end of the iteration, show that string in the MsgBox. This general method can work even if you just want one message for the entire loop. You can append text to a variable.
Since element.1 cannot have two different values at the same time, how would you get two boxes in a single iteration anyway?
Re: Write to one MsgBox
Posted: 17 Jun 2021, 17:42
by Ecimeric
Code: Select all
RegKeys =
(
exist;HKLM\SYSTEM\CurrentControlSet\Services\bthserv;1
disabled;HKLM\SYSTEM\CurrentControlSet\Services\bthserv;Start
)
RegKeysArray := []
Loop, Parse, RegKeys, `n
RegKeysArray.Push(StrSplit(A_LoopField, ";"))
for index, element in RegKeysArray {
RegRead, RegValue, % element.2, % element.3
if (element.1 = "exist") {
if ErrorLevel
Msg := % Msg element.2 "\" element.3 " does not exist.`n`n"
} else if (element.1 = "disabled") {
if (RegValue != 4)
Msg := % Msg element.2 " is not disabled.`n`n"
}
}
MsgBox, 262208, , % Msg
I am sure there is a better way...
Re: Write to one MsgBox Topic is solved
Posted: 17 Jun 2021, 18:33
by mikeyww
Code: Select all
RegKeys =
(
exist;HKLM\SYSTEM\CurrentControlSet\Services\bthserv;1
disabled;HKLM\SYSTEM\CurrentControlSet\Services\bthserv;Start
)
Msg := ""
For lineNum, line in StrSplit(RegKeys, "`n") {
element := StrSplit(line, ";")
RegRead, RegValue, % element.2, % element.3
Msg .= (element.1 = "exist" && ErrorLevel) ? ("`n" element.2 "\" element.3 " does not exist.")
: (element.1 = "disabled" && RegValue != 4) ? ("`n" element.2 " is not disabled.") : ""
}
MsgBox, 64, Results, % SubStr(Msg, 2)
Re: Write to one MsgBox
Posted: 17 Jun 2021, 19:14
by Ecimeric
Thank you