Hidden run of a third party application (silent print from Adobe Reader)
Posted on 2008-11-11
I would like to run a third party application (Adobe Reader 9) completely hidden, without displaying the splash screen, application window, taskbar button etc.
The background story: I have to print PDF files from my application, the Adobe Reader 9 with the /t command line switch does it fine, but the Reader window pops up while printing, which is very annoying and unprofessional (the same thing happens with the ActiveX control). I didn't consider using third party PDF applications (as recommended on Experts-Exchange before) due to various reasons (press quality transparency flattening is needed, done well only by Adobe products).
Therefore the only solution I see is to manage somehow to hide the Reader window. Here are the things I've tried so far:
1. CreateProcess with the SW_HIDE switch specified -- works fine with other apps, Adobe ignores it.
2. Calling ShowWindow(Handle, SW_HIDE) right after the Reader window is created (I have even installed a shell hook for that), but the window appears for a moment on the screen, of if called with the /t switch, it even stays there until the print operation completes (apparently the message loop is blocked while it prints).
3. Starting it as a different user: the window will still appear on the active desktop.
My further ideas are to launch Reader on a different desktop or a different window station, but Ive never used them before and have no idea whether they will work or not. Any other ideas for hiding Acrobat or printing silently in any other way are welcome.