Frage

ich bin mit c# zu erstellen, die eine Schaltfläche für den IE und dieser Taste führt bestimmte Aktionen, die alle davon abhängen, das Dokument wird ein PDF-Dokument.Ich bin versucht, setup-eine Wache, um zu verhindern, dass jede Handlung, die stattfindet, wenn das Dokument geben Sie nicht eine PDF-Datei aber nicht sicher, wie Sie IE Hände über dem Dokument zu adobe und reader übernimmt.Ich bin mit beiden SHDocWv habe mir die WebBrowserClass Objekte und nicht sicher sind, wie Sie dies herausfinden.irgendwelche Vorschläge?

War es hilfreich?

Lösung

Es ist ein bisschen problematisch, dies zu tun, soweit ich weiß.

Wert IWebBrowser2::Type Eigenschaft hängt davon ab, welche plug-in, das Sie installiert haben, verarbeitet die PDF-Dateien, da einige plugins erzeugt HTML-wrapper für die PDF-Datei (Adobe), so erhalten Sie "HTML-Dokument" als Dateityp und einige plugins, die dies nicht tun (wie z.B. Foxit), man kann also nicht die relais, die auf dieser ausschließlich.

Wenn Sie also PDF-Datei mit HTML-wrapper, die Sie verwenden können IHTMLDocument2::mimeType um herauszufinden, den genauen Typ des Dokuments (JPEG/GIF/PNG/etc.Dateien sind alle eingewickelt in HTML mit dem browser).Da ich aber weiß, ist es unzuverlässig zu, zum Beispiel auf meiner Maschine gibt es "Firefox Document" für HTML-Dokumente, weil .html-Dateien sind im Zusammenhang mit Firefox :s Aber ich nicht testen, um zu sehen, ob dies der Fall ist, die mit PDF-Dateien alos.

Weitere Optionen verwenden GetUrlCacheEntryInfoEx API-Aufruf erhalten Sie die Datei im browser-cache speichert Dokument, dann Lesen Sie es (nur der Anfang der Datei, die ich denke, nur die ersten 256 bytes sind wichtig), und rufen Sie FindMimeFromData die Daten, die Sie gerade Lesen, und es wird Rückkehr mime-Typ.

Andere Tipps

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

Eine weitere gute Möglichkeit ist es, die folgenden ..

zu tun

1] Cast des Document-Objekt zu IPersist und extrahieren Sie die CLSID mit .GetClassID (..). 2] pinvoke ProgIDFromCLSID zu extrahieren, die Programm-ID 3] Passen Sie die progID gegen bekannte COM-Objekte / Anwendungen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top