2009-05-05 12 views
1

angezeigt wird Ich verwende C#, um eine Schaltfläche für IE zu erstellen, und diese Schaltfläche führt bestimmte Aktionen durch, die alle davon abhängig sind, dass das Dokument ein PDF-Dokument ist. Ich versuche einen Wächter einzurichten, der jegliche Aktion verhindert, wenn der Dokumenttyp kein PDF ist, aber nicht sicher ist, wie der IE das Dokument an Adobe und den Leser übergibt. Ich benutze beide SHDocWv haben sich die WebBrowserClass-Objekte angeschaut und sind mir nicht sicher, wie ich das herausfinden soll. irgendwelche Vorschläge?Wie finde ich heraus, welche Art von Dokument in IE

Antwort

1

Es ist ein wenig problematisch zu tun dieses AFAIK.

Wert von IWebBrowser2 :: Typ Eigenschaft auf welche Plug-In installiert haben, hängt das PDFs behandelt, weil einige Plug-ins HTML-Wrapper für die PDF-Datei erstellt (wie Adobe), so dass Sie "HTML-Dokument" als Typ erhalten und einige Plug-Ins tun dies nicht (wie Foxit), so dass Sie sich nicht ausschließlich darauf beziehen können.

Also, wenn Sie PDF-Dateien mit HTML-Wrapper bekam können Sie IHTMLDocument2 verwenden :: mime zur genauen Art des Dokuments herausfinden (JPEG/GIF/PNG/etc. Dateien werden alle in HTML vom Browser verpackt). Aber wie ich weiß, ist es auch unzuverlässig, zum Beispiel auf meinem Rechner gibt es "Firefox Document" für HTML-Dokumente zurück, weil .html-Dateien mit Firefox verknüpft sind: s Aber ich habe nicht getestet, ob dies auch bei PDFs der Fall ist.

Another Optionen ist GetUrlCacheEntryInfoEx API-Aufruf zu verwenden Datei im lokalen Browser-Cache zu erhalten, das Dokument speichert, lesen Sie es dann (nur der Anfang der Datei, denke ich nur die ersten 256 Bytes wichtig sind) und rufen FindMimeFromData mit Daten, die Sie gerade gelesen haben, und es wird Mime-Typ zurückgeben.

0

prüfen MIME-Typ des Dokuments oder der window.location.href von Web-Browser sehen ... Wenn pdf angezeigt wird, würden Sie in der Lage, es zu finden ...

+0

URL kann nicht überprüft werden, da einige Websites Abfragezeichenfolgen ohne "pdf" in der Adresse zurückgeben. Kannst du mir sagen, wie man auf die Mime-Typen und von welcher Klasse/Objekt zugreifen kann? – Grant

0

Eine weitere gute Möglichkeit ist die folgende ..

1] Cast des Document-Objekt zu IPersist und extrahieren Sie die CLSID mit .GetClassID (..) zu tun. 2] pInvoize ProgIDFromCLSID, um die progId zu extrahieren 3] Vergleichen Sie die progID mit bekannten COM-Objekten/Anwendungen.

Verwandte Themen