If I understand you correctly, the thing to do is to raise an event, passing the barcode data when a scan is made. The GUI should react to the event by showing the relevant UI you want.
The scanner "listener" might need to run on a separate thread (to avoid blocking the UI), not its own application. That said, you might not need a thread if the Scanner API has an event you can hook in to.
[Edit]
The method of showing the window you need is dependant on what you want to do and how the window is "hidden", if your form is already open this might help, in the form's eventhandler for the scanned event
TopMost = true;
Focus();
BringToFront();
One final thing, services are meant to be for long running processes, they don't [can't!] have UIs. Getting the inter-process communications (remoting) is relatively messy, and probably not needed. I suggest you make your UI app a syst tray one (For guidance see
this website[
^]). This way you start your app, it minimises itself into the system tray and when the scanner raises the "CodeRead" event you can unminise the UI and it should have focus (if not the code above should sort this). Once the user is done, the app can be re-minimised neatly into the systray.