Jump to content
Sign in to follow this  
Nety

Running process check loops once to often

Recommended Posts

Nety

I have the following which is part of a larger script which checks for running processes and displays them so the user can close them before continuing. However I cannot seem to get it to not loop one more time once all programs are closed. It shows a empty list. How can I get it not loop that last time?

$Title = "Start"
While $Title <> ""
    Local $List = WinList()
    Local $Title = ""
    For $i = 1 To $List[0][0]
    If $List[$i][0] <> "" And IsVisible($List[$i][1]) and $List[$i][0] <> "Start"  and $List[$i][0] <> "Program Manager" Then
        Dim $Process = IDtoName( WinGetText($List[$i][0]))
        ;$Title &= $Process & @TAB & $List[$i][0] & @CRLF
        $Title &= @TAB & $List[$i][0] & @CRLF
    EndIf
    Next
    msgbox(0,"SAP 7.2 Upgrade", "The following programs are running. They must be closed before the upgrade can continue..." & @CRLF &  @CRLF & $Title & @CRLF &  @CRLF & "Please close them and then click OK to continue")
WEnd
Func IDtoName($Handle)
    Dim $ProcList = ProcessList()
    For $i = 1 To $ProcList[0][0]
    If $ProcList[$i][1] = $Handle Then
        Return ($ProcList[$i][0])
    EndIf   
    Next
EndFunc
Func IsVisible($Handle)
    If BitAND( WinGetState($Handle), 2) Then
        Return 1
    Else
        Return 0
    EndIf
EndFunc

Share this post


Link to post
Share on other sites
MvGulik

Wrong assumption interpretation. Your running the right number of loops.

But you do not test ($Title) for the end result (=='') when displaying your message box.

Ergo: Empty list on last msg-prompt.

Edited by iEvKI3gv9Wrkd41u

"Straight_and_Crooked_Thinking" : A "classic guide to ferreting out untruths, half-truths, and other distortions of facts in political and social discussions."
"The Secrets of Quantum Physics" : New and excellent 2 part documentary on Quantum Physics by Jim Al-Khalili. (Dec 2014)

"Believing what you know ain't so" ...

Knock Knock ...
 

Share this post


Link to post
Share on other sites
Nety

OK so I have added the a If $Title == "" check in as below. Is this the best way to check? It works :mellow:

While $Title <> ""
    Local $List = WinList()
    Local $Title = ""
    For $i = 1 To $List[0][0]
    If $List[$i][0] <> "" And IsVisible($List[$i][1]) and $List[$i][0] <> "Start"  and $List[$i][0] <> "Program Manager" Then
        Dim $Process = IDtoName( WinGetText($List[$i][0]))
        ;$Title &= $Process & @TAB & $List[$i][0] & @CRLF
        $Title &= @TAB & $List[$i][0] & @CRLF
    EndIf
    Next
    If $Title == "" Then
        ExitLoop
    Else
        msgbox(0,"SAP 7.2 Upgrade", "The following programs are running. They must be closed before the upgrade can continue..." & @CRLF &  @CRLF & $Title & @CRLF &  @CRLF & "Please close them and then click OK to continue")
    EndIf
WEnd

Share this post


Link to post
Share on other sites
MvGulik

Nothing wrong with how you did it. :mellow:

Possible (example) alternative would be:

If Not ($Title == "") Then
        msgbox(0,"SAP 7.2 Upgrade", "The following programs are running. They must be closed before the upgrade can continue..." & @CRLF &  @CRLF & $Title & @CRLF &  @CRLF & "Please close them and then click OK to continue")
    Endif
If $Title Then msgbox(0,"SAP 7.2 Upgrade", "The following programs are running. They must be closed before the upgrade can continue..." & @CRLF &  @CRLF & $Title & @CRLF &  @CRLF & "Please close them and then click OK to continue")
If Not $Title Then ExitLoop
    msgbox(0,"SAP 7.2 Upgrade", "The following programs are running. They must be closed before the upgrade can continue..." & @CRLF &  @CRLF & $Title & @CRLF &  @CRLF & "Please close them and then click OK to continue")

Its somewhat a matter of taste.


"Straight_and_Crooked_Thinking" : A "classic guide to ferreting out untruths, half-truths, and other distortions of facts in political and social discussions."
"The Secrets of Quantum Physics" : New and excellent 2 part documentary on Quantum Physics by Jim Al-Khalili. (Dec 2014)

"Believing what you know ain't so" ...

Knock Knock ...
 

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  

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.