How does your VI decide which subVI to close when you hit the button
on the front panel? Is it by name? If so, then that's all you need to
open a reference to the subVI.
There is a property node that will list all VIs in memory, but if you
have a large program, this could be a huge list.
Windows utils has a "Get Windows Task List" VI, but it doesn't list
VIs (since they are not individual tasks - they list under their
parent).
So the best that I could come up with right now is to set up a global
variable array of strings in which any VI that opens its front panel
lists its name (or the calling VI lists its name) and then you have a
list of all open front panels to work with. A bit kludgy, but should
run fairly fast.
Rob