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

解決


komin  2008-09-29 07:53:19  No: 32069

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

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

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


komin  2008-09-30 05:47:28  No: 32070

自己解決しました。
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

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


monaa  2008-09-30 06:31:14  No: 32072

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


monaa  2008-09-30 06:33:48  No: 32073

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


komin  2008-10-06 07:46:17  No: 32074

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加