アプリケーションからpdfファイルを印刷するのに以下のようにしています。
ShellExecute(Handle,'print',filename.pdf,nil,nil,0);
これで印刷はできるのですが、印刷終了後Adobe Readerが残ってしまいます。印刷終了後にAdobe Readerを終了するにはどうしたらいいでしょうか?
自己解決しました。
var
H : HWND;
H :=FindWindow(nil, 'Adobe Reader');
if H <> 0 then SendMessage(hcal, WM_CLOSE, 0, 0);
なんか基本的な部分だったようで、恐縮です。
解決チェックを忘れました。
個人ユースならそれでいいかも知れませんが、
それじゃ、自分で立ち上げてないAdobe Readerも終了してしまいますよ。
Createprocessでハンドルを保持する方がいいかもです。
もしくは、未確認ですがSellExecuteで親ハンドルを指定しているなら
親の確認をした方がいいと思います。
アドバイスありがとうございます。明示的にpdfファイルを開いている場合は、ウィンドゥハンドルが「ファイル名 - Adobe Reader」となっていて、クローズされないので、今回はよしとしました。
親の確認などは次のバージョンで試してみようと思います。
ツイート | ![]() |