2009-04-10 6 views
1

Wenn ein IE-Benutzer auf den Link einer Datei in SharePoint klickt (und der Benutzer "schreibgeschützten" Zugriff auswählt), wird die Datei in Temporäre Internetdateien kopiert, meine Anwendung wird geöffnet und der Dateiname als Parameter übergeben. Ich versuche, eine "Auschecken" -Schaltfläche in meiner App zu implementieren, sodass ein Benutzer vom Nur-Lesen-Modus zum Auschecken- und Bearbeiten-Modus wechseln kann. Ich habe keine Möglichkeit gefunden, die SharePoint-URL für die Datei zu lernen. Beim Auschecken und Bearbeiten ist das kein Problem: Es gibt einen Registrierungseintrag, der die Datei auf meinem System der URL in SharePoint zuordnet. Ich habe so etwas für schreibgeschützte Dateien nicht gefunden.Temporäre Internetdatei (von SharePoint über IE gelesen). Wie finde ich die URL?

EDIT: Es gibt eine URL-Spalte in Windows Explorer verfügbar, aber wenn ich diese Spalte anzeigen (im Explorer), sind alle Werte leer. Ich kann auch keinen Datei-Information-API-Aufruf finden, der diesen Wert für mich zurückgibt.

UPDATE: Ich fand einige vielversprechende Aufrufe in der wininet.lib: FindFirstUrlCacheEntryEx (und "nächste") zusammen mit FindFirstUrlCacheGroup (und nächste). Sie schienen keine Daten zurückzugeben, und von dem, was ich lese, geben diese nur meine Anwendung der Wininet API Calls Cache - nicht I.E.'s.

Ich habe auch versucht, durch die Liste der COM-Aufrufe, die IE in meine App gemacht, wenn die Datei geöffnet wurde, um zu sehen, welche Schnittstellen es sah, wenn ich unterstützte. Eine, die vielversprechend aussah, war die IMonikerProp-Schnittstelle, die, als ich sie implementierte, aufgerufen wurde ... aber sie lieferte mir nur die MIME-Typ-Eigenschaft, die Classid meiner App und das TrustedDownload-Flag.

Antwort

2

Vielleicht hat diese Seite die Antwort: How SharePoint communicates with Word via ActiveX

Eine weitere Option könnte in der Sharepoint-ItemCheckingOut Ereignis einzuhaken. Example 1Example 2. In dem Fall könnten Sie die URL-Informationen erhalten und eine temporäre Datei mit den Informationen erstellen oder die Informationen an Ihr Programm weitergeben.

Link to ActiveX control info - Vielleicht ist dieses Steuerelement auf alles gestartet? Vielleicht können Sie das anzapfen.

+0

Ich habe die Kasse aus dem Fall von SharePoint behandelt; Es gibt Registrierungseinträge, die den lokalen Dateinamen der ausgecheckten URL unter HKEY_CURRENT_USER zuordnen. Ich versuche, den Fall zu öffnen, die Datei ohne Kasse zu öffnen, und dann zu entscheiden, die Datei aus der App heraus zu überprüfen. MS Word tut dies – Steve

+0

ItemCheckedOut und ItemCheckingOut sind die einzigen Ereignisse, die ich finden kann, sie werden definitiv nicht ausgelöst, wenn ein Element als schreibgeschützt angesehen wird? Es fühlt sich so an, als müssten sie, denn laut dem Link, den ich gerade hinzugefügt habe, starten Word/Excel usw. ein ActiveX-Steuerelement, um diese Informationen zu speichern. –

0

Hat die erstellte temporäre Datei einen guten Namen (stimmt sie mit dem überein, was die Datei eigentlich heißt oder ist es Kauderwelsch)? Wenn es ein guter Name ist, können Sie wahrscheinlich danach suchen. Sonst, ohne die Site, den Ordner, den Dateinamen zu kennen, können Sie möglicherweise nicht in der Lage sein, es sei denn, es gibt irgendwo zusätzliche Daten über die Datei.

+0

Der Name ist in Ordnung, aber ich muss immer noch den Fall mehrerer Dateien mit demselben Namen in mehreren verschiedenen SharePoint-Ordnern abdecken. Außerdem weiß ich nicht, welchen SharePoint-Server Sie ausprobieren sollen (falls es mehr als 1 gibt). – Steve

+0

Basierend auf dem Benutzer können Sie die Suche auf welche Server/Dateien beschränken. Hoffentlich haben sie nicht zwei Dateien mit dem gleichen Namen zur gleichen Zeit ausgecheckt. –

+0

Der Fall, in dem der Benutzer die Datei auscheckt, wird bereits behandelt. Es gibt Registrierungseinträge, die das gut abbilden. Der Fall, den ich versuche zu behandeln, ist der Fall, in dem der Benutzer die Datei ohne Auschecken öffnet und dann einen Checkout innerhalb der App durchführen möchte. MS Word tut dies (Checkout-Button in der Symbolleiste) – Steve