Thank you both for your replies. Unfortunately, none of the examples given solve the issue.
@burnix
The Kill/CloseProgram() lines are never reached when PsExec is set to actually execute a remote process (ipconfig in my case). The Repeat...ForEver block in your first example causes the PB window itself to hang, and the While ProgramRunning() in the second runs indefinitely for as long as the psexec.exe process is running. When PsExec is called without any parameters, it displays its help screen, and when it's called from RunProgram(), everything runs as it should; the entire contents of the help is displayed, and the process terminates on its own. The problem comes into play when PsExec executes the remote process, as only partial output (of the remote process) is displayed, and PsExec itself runs forever.
@Max
The situation with your example is the same as I described above. The While ProgramRunning() block will loop forever if I don't manually close PsExec whenever it's executing a remote process. As I mentioned, if PsExec is called without any parameters such as to display its syntax usage, all of the output is displayed properly, and it terminates normally.
"Ahead one third... ahead two thirds... Full ahead flank
And out from the belly of the whale came a prophet, Amen"