PDFファイルを開く – 固定ページ 2 – プログラミング – Home

通知
すべてクリア

[解決済] PDFファイルを開く

固定ページ 2 / 2

Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

http://www24.cds.ne.jp/~neg/pro/piyo1/ap/close.html
をみたら
> !this->m_pPDFExeWnd->SendMessage(WM_CLOSE))
!this->m_pPDFExeWnd->PostMessage(WM_SYSCOMMAND, SC_CLOSE))
の方がよさそうです。


返信引用
GG
 GG
(@GG)
ゲスト
結合: 18年前
投稿: 185
Topic starter  

Blueさん、
ご返事ありがとう.

>>CreateProcess()とEnumWindows()で、
>>閉じることが出来ました。
>本当にそれでよかったんでしょうか?

なるほど、
そうですね、自分でそのフルパスを覚えて、他のマシンにインストールするときに、
確認が必要になります。よくないです。
でも、CreateProcess()の使い方がわかりました。場合によって、使い道があります。
確かに、CreateProcess()の柔軟性があります。

>ちなみに、ここには間違いがあります。
>ボタンでなくユーザが手動でAdobe Readerを閉じると、デバッグモードではASSERTしま
>す。

ボタン2(OnBnClickedOk())
if (!this->m_pPDFExeWnd)
 this->m_pPDFExeWnd = this->FindWindow(_T(AdobeAcrobat), NULL);
if (this->m_pPDFExeWnd){
if (!this->m_pPDFExeWnd->SendMessage( WM_CLOSE))
this->m_pPDFExeWnd = NULL; // 閉じたので
}
で、書き直しました。

>!this->m_pPDFExeWnd->PostMessage(WM_SYSCOMMAND, SC_CLOSE))
>の方がよさそうです。

WM_SYSCOMMAND,を入れると、閉じることが出来なくなりました。
if (!this->m_pPDFExeWnd->SendMessage( WM_CLOSE))
this->m_pPDFExeWnd = NULL; // 閉じたので
正しいです。

いろいろ教えていただき、ありがとうございました。


返信引用
たいちう
 たいちう
(@たいちう)
ゲスト
結合: 23年前
投稿: 662
 

> まぁ、CreateProcessでも出来なくはないですが、Adobe Readerのフルパスが必要にな

> てしまうので、ShellExecuteEx関数で起動後、対象のウィンドウハンドルを探して、
> WM_CLOSEをSendMessageするようにしてはどうでしょうか?

開けるアプリケーションのパスが必要ないというのは大きな利点ですね。
私も勉強になりました。


返信引用
固定ページ 2 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました