ShellAPIで使用したアプリを終了するには?

解決


komin  2008-09-29 07:53:19  No: 32069  IP: [192.*.*.*]

アプリケーションからpdfファイルを印刷するのに以下のようにしています。

ShellExecute(Handle,'print',filename.pdf,nil,nil,0);

  これで印刷はできるのですが、印刷終了後Adobe Readerが残ってしまいます。印刷終了後にAdobe Readerを終了するにはどうしたらいいでしょうか?

編集    削除
komin  2008-09-30 05:47:28  No: 32070  IP: [192.*.*.*]

自己解決しました。
var 
  H : HWND;
  H :=FindWindow(nil, 'Adobe Reader');
  if H <> 0 then SendMessage(hcal, WM_CLOSE, 0, 0);

  なんか基本的な部分だったようで、恐縮です。

編集    削除
komin  2008-09-30 06:05:50  No: 32071  IP: [192.*.*.*]

解決チェックを忘れました。

編集    削除
monaa  2008-09-30 06:31:14  No: 32072  IP: [192.*.*.*]

個人ユースならそれでいいかも知れませんが、
それじゃ、自分で立ち上げてないAdobe Readerも終了してしまいますよ。
Createprocessでハンドルを保持する方がいいかもです。

編集    削除
monaa  2008-09-30 06:33:48  No: 32073  IP: [192.*.*.*]

もしくは、未確認ですがSellExecuteで親ハンドルを指定しているなら
親の確認をした方がいいと思います。

編集    削除
komin  2008-10-06 07:46:17  No: 32074  IP: [192.*.*.*]

アドバイスありがとうございます。明示的にpdfファイルを開いている場合は、ウィンドゥハンドルが「ファイル名 - Adobe Reader」となっていて、クローズされないので、今回はよしとしました。
  親の確認などは次のバージョンで試してみようと思います。

編集    削除