どのようなものを見つけるか“種類”のドキュメントがIEに表示されています
-
05-07-2019 - |
質問
iはc#を使用してIE用のボタンを作成しています。このボタンは、PDFドキュメントであるドキュメントにすべて依存する特定のアクションを実行します。ドキュメントタイプがPDFではない場合にアクションが発生しないようにガードを設定しようとしていますが、IEがAdobeにドキュメントを渡してリーダーが担当する方法がわからない。私は両方のSHDocWvを使用していますが、WebBrowserClassオブジェクトを調べましたが、これをどのように把握するかわかりません。提案はありますか?
解決
これを知るのは少し問題があります。
したがって、HTMLラッパー付きのPDFを取得した場合は、 IHTMLDocument2 :: mimeType を使用してドキュメントの正確なタイプを確認できます(JPEG / GIF / PNG / etc。ファイルはすべてHTMLでラップされますブラウザ)。しかし、私が知っているように、たとえば私のマシンでは、「Firefox Document」を返します; .htmlファイルはFirefoxに関連付けられているため、HTMLドキュメントの場合:sしかし、これがPDFの場合に当てはまるかどうかはテストしませんでした。
もう1つのオプションは、 GetUrlCacheEntryInfoEx API呼び出しを使用して、ドキュメントを保存するローカルブラウザーキャッシュにファイルを取得し、それを読み取ることです(ファイルの先頭のみ、最初の256バイトのみが重要だと思います)読んだばかりのデータで FindMimeFromData を呼び出すと、MIMEタイプが返されます。
他のヒント
ドキュメントのMIMEタイプを確認するか、webbrowserのwindow.location.hrefを参照してください... pdfが表示されている場合、見つけることができます...
別の良い方法は、次のことを行うことです。
1] DocumentオブジェクトをIPersistにキャストし、.GetClassID(..)を使用してCLSIDを抽出します。 2] ProgIDFromCLSIDをpInvokeして、progIdを抽出します 3] progIDを既知のCOMオブジェクト/アプリケーションと照合します。