Write to one MsgBox Topic is solved

Get help with using AutoHotkey (v1.1 and older) and its commands and hotkeys
Ecimeric
Posts: 130
Joined: 11 Jan 2017, 02:23

Write to one MsgBox

17 Jun 2021, 17:12

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?
User avatar
mikeyww
Posts: 26951
Joined: 09 Sep 2014, 18:38

Re: Write to one MsgBox

17 Jun 2021, 17:24

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?
Ecimeric
Posts: 130
Joined: 11 Jan 2017, 02:23

Re: Write to one MsgBox

17 Jun 2021, 17:42

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...
User avatar
mikeyww
Posts: 26951
Joined: 09 Sep 2014, 18:38

Re: Write to one MsgBox  Topic is solved

17 Jun 2021, 18:33

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)

Return to “Ask for Help (v1)”

Who is online

Users browsing this forum: DataLife, Google [Bot], pgeugene, Rohwedder and 57 guests