Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Запустить приложение с помощью ShellExecute и подождать

01.01.2007
 Var
   exInfo: TShellExecuteInfo;
 Begin
   FillChar( exInfo, Sizeof(exInfo), 0 );
   With exInfo Do Begin
     cbSize:= Sizeof( exInfo ); // required!
     fMask := SEE_MASK_NOCLOSEPROCESS;
     Wnd   := Handle;  // forms handle
     lpVerb:= 'paintto';
     lpFile:= Pchar( pdffilename );
     lpParameters := PChar( printernameAndPort );
     nShow := SW_HIDE;
   End;
   If ShellExecuteEx( @exInfo ) Then Begin
      While GetExitCodeProcess( exinfo.hProcess, exitcode )
            and (exitcode = STILL_ACTIVE)
      Do
        Sleep( 500 );
      CloseHandle( exinfo.hProcess );
      DeleteFile( pdffilename );
   End
   Else
     ShowMessage(SysErrorMessage( GetLastError ));