Moin,moin,
ich weiß nicht, ob dir das weiterhilft, zumal es reine Code-Akrobatik ist. Ich habe eine Maske in der die PDF-Dateien ganz normal angehängt werden,über die Büroklammer.
Wenn auf dieses Dok doppelklickt, wird die Datei mit Adobe geöffnet und das Dok selbst nicht angezeigt. Wie das mit dem Index ist, kann ich dir im Moment nicht sagen, noch nicht getestet.
Folgender Code:
Declarations
Dim WScript As Variant
Dim fso As Variant
Sub Initialize
Set WScript = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
End Sub
Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
'**********************************************************************************************************************
'Hier wird der Start des Dateianhangs ausgeführt, indem der Anhang auf der Platte gespeichert und mittels
'WScript aufgerufen wird. Gleichzeitig werden 2 Batchdateien erstellt, die dafür sorgen, dass die geöffnete
'Datei beim nächsten Neustart gelöscht werden.
'Hierfür wird eine der Batchdateien im Autostart-Ordner des Users gespeichert. Diese löscht die zwischen-
'gespeicherte Datei, und ruft die 2 Batchdatei im LNData-Verzeichnis des Users auf, und übergibt ihr den
'Pfad zu sich selbst. Die 2. Batchdatei löscht dann übergebene Datei im Autostart-Ordner
'**********************************************************************************************************************
'Allgemein
Dim s As New NotesSession
Dim doc As NotesDocument
Dim item As NotesRichTextItem
Dim obj As NotesEmbeddedObject
Dim Dateipfad As String
Dim Dateiname As String
'**********************************************************************************************************************
If Not IsNewDoc Then
Set doc = source.Document
Set item = doc.GetFirstItem("Dateianhang")
Set obj = doc.GetAttachment(item.EmbeddedObjects(0).name)
'Prüfen ob G:\LNdata\tmp vorhanden, sonst erstellen
If Not fso.FolderExists("G:\LNdata\tmp") Then Mkdir "G:\LNdata\tmp"
'Pfad für Zwischenspeichern setzen
Dateipfad = "G:\LNdata\tmp\" & item.EmbeddedObjects(0).name
'evtl. befindet sich die Datei noch auf der Festplatte
If fso.FileExists(Dateipfad) Then
WScript.run(|"| & "G:\LNdata\tmp\" & item.EmbeddedObjects(0).name & |"|)
Else
'Zwischenspeichern und Öffnen des Anhangs
Call obj.ExtractFile(Dateipfad)
WScript.run(|"| & "G:\LNdata\tmp\" & item.EmbeddedObjects(0).name & |"|)
End If
'Batchdateien für die Löschung des Anhangs erstellen
'Dateiendung rausfiltern
Dateiname = Mid(item.EmbeddedObjects(0).name,1,Len(item.EmbeddedObjects(0).name) - 4)
'WScript.SpecialFolders("Startup") gibt bei Citrix-Anwendungen das Laufwerk des Servers (hier V:\) mit dem jeweiligen
'Benutzerprofil zurück. Bei den Usern ist der Autostart-Ordner immer auf C:\
Call BatchFile_Create( "C" & Mid(WScript.SpecialFolders ("Startup"),2,Len(WScript.SpecialFolders ("Startup")) -1),Dateipfad,Dateiname)
'das Notesdokument soll nicht angezeigt werden
Continue = False
End If
End Sub
Sub BatchFile_Create(Autostart As String,Dateipfad As String,Dateiname As String)
'**********************************************************************************************************************
'Batch1 = Batchdatei im LNData-Verzeichnis, die die übergebene Batch im Autostart-Ordner löscht
'Batch2 = Batchdatei im Autostart-Ordner, die die zwischengespeicherte Datei löscht und Batch1
'mit dem PFad zu sich selbst aufruft
'**********************************************************************************************************************
Dim Batch1 As Integer, Batch2 As Integer
Dim Befehl As String
Batch1 = Freefile()
Batch2 = Freefile()
'Batch1 im LNData erstellen
Open "G:\LNData\AutostartLöschen.bat" For Output Access Write As Batch1
Print #Batch1, "@echo off"
Print #Batch1,"REM der Schalter chcp 1252 sorgt dafür, dass Umlaute (hier ü und ö) richtig interpretiert werden"
Print #Batch1, "chcp 1252"
Print #Batch1, "REM %1 ist der Pfad zu der aufrufenden Batch im Autostartordner."
Print #Batch1, "del %1"
'Erstellte Datei schließen
Close Batch1
'Batch2 im 'Autostart erstellen
Open Autostart & "\" & Dateiname & ".bat" For Output Access Write As Batch2
Print #Batch2, "@echo off"
Print #Batch2,"REM der Schalter chcp 1252 sorgt dafür, dass Umlaute (hier ü) richtig interpretiert werden"
Print #Batch2, "chcp 1252"
Print #Batch2,"REM die zwischengespeicherte Datei löschen"
Print #Batch2, "del " & |"| & Dateipfad &|"|
Print #Batch2, "REM Die Datei im LNData Verzeichnis aufrufen und den Pfad zu sich selbst übergeben"
Befehl = "G:\LNData\AutostartLöschen.bat " & |"| & Autostart & "\" & Dateiname & ".bat" & |"|
Print #Batch2, Befehl
'Erstellte Datei schließen
Close Batch2
End Sub
Gruß
Demian