Okay, it's time to return back to your original design. You say you run the program from your service. Windows Vista/7 service runs in a separate non-interactive session, so any process the service launches remains running in the session, which means no interaction with desktop. Unless you make it run interactive intentionally, which I guess you did not.
What is the OS version you do that run in?
If the OS is XP, do you instruct your service run interactive? If you do, remove the interactive flag.