Come scoprire quale "tipo" di documento viene visualizzato in IE
-
05-07-2019 - |
Domanda
Sto usando c # per creare un pulsante per IE e questo pulsante esegue determinate azioni che dipendono dal fatto che il documento è un documento PDF. Sto cercando di impostare una protezione per impedire che si verifichi qualsiasi azione se il tipo di documento non è un PDF ma non sono sicuro di come IE consegna il documento ad Adobe e il lettore prende in carico. Sto usando entrambi SHDocWv che hanno esaminato gli oggetti WebBrowserClass e non sono sicuro di come capirlo. qualche suggerimento?
Soluzione
È un po 'problematico fare questo AFAIK.
Il valore della proprietà IWebBrowser2 :: Type dipende dal plug-in che hai installato che gestisce i PDF, perché alcuni plug-in creano wrapper HTML per file PDF (come Adobe) in modo da ottenere " Documento HTML " come tipo e alcuni plug-in non lo fanno (come Foxit), quindi non puoi inoltrarlo esclusivamente.
Quindi, se hai PDF con wrapper HTML puoi usare IHTMLDocument2 :: mimeType per scoprire il tipo esatto del documento (i file JPEG / GIF / PNG / ecc. sono tutti racchiusi in HTML dal browser). Ma come so che è anche inaffidabile, ad esempio sul mio computer restituisce "Documento Firefox" per i documenti HTML perché i file .html sono associati a Firefox: s Ma non ho testato per vedere se questo è il caso dei PDF alos.
Un'altra opzione è quella di utilizzare la chiamata API GetUrlCacheEntryInfoEx per ottenere il file nella cache del browser locale che memorizza il documento, quindi leggerlo (solo l'inizio del file, penso che solo i primi 256 byte siano importanti) e chiama FindMimeFromData con i dati che hai appena letto e restituirà il tipo mime.
Altri suggerimenti
Controlla il tipo mime del documento o vedi window.location.href del browser web ... Se viene visualizzato il pdf, potresti trovarlo ...
Un altro buon modo è fare quanto segue ..
1] Trasmetti l'oggetto Document a IPersist e quindi estrai il CLSID usando .GetClassID (..). 2] pInvoke ProgIDFromCLSID per estrarre il progId 3] Abbina il progID a oggetti / applicazioni COM noti.