Die Chancen stehen schlecht. Es macht häufig keinen Sinn, Windows-Programme (also keine Konsolenprogramme) per system() aufzurufen wg. der geschilderten Problematik. Wenn es tatsächlich ein Konsolprogramm ist, dann sollte es auch keine Fehler per MsgBox melden, sondern stderr verwenden oder ins EventLog schreiben. Das kann aber nur der Entwickler des externen Programms abstellen.
Einen Versuch kannst Du noch mit
Win32::Process starten. Dort gibt es die Möglichkeit per Win32::Process::Create die Option CREATE_NO_WINDOW zu verwenden. Vielleicht ist dann ja Ruhe.
Gruß
Thomas