Domino 9 und frühere Versionen > ND7: Entwicklung
Anhänge aus Richtextitem starten lassen
Fedaykin:
Hi Demian
Schon mal darüber nachgedacht die Datei in einen Temp Ordner zu extrahieren und diesen einfach mit Loginscript oder so manchmal leeren? So ein Temp Ordner kann ja sonst auch immer mal nützlich sein. Erfahrung mit Lotus Notes in Citrix Umgebung habe ich leider keine (obwohl mich das schon interessieren würde, da beides eigentlich im Haus).
Gruss
Remo
Demian:
Moin Remo,
mit Loginscripts habe ich mich noch nicht befasst. Ich denke aber, das ich auch nicht über den entsprechenden Zugriff verfüge, diese zu erstellen, ich bin kein Admin. Oder liegen die lokal? Würde dann nächste Woche mal unseren Admin fragen.
Gruß
Demian
Demian:
Also,
nachdem ich das Ganze über 2 Batchdateien gelöst hatte (siehe Script), habe ich mich mal ein bisschen mit unserem Loginscript (KixStart) befasst. Das ist doch sauberer als mit den Batchdateien.
Vielen Dank für den Tipp mit dem Loginscript.
Gruß
Demian
--- Zitat ---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 die ü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 C:\Temp vorhanden, sonst erstellen
If Not fso.FolderExists("C:\Temp") Then Mkdir "C:\Temp"
'Pfad für Zwischenspeichern setzen
Dateipfad = "C:\Temp\" & item.EmbeddedObjects(0).name
'evtl. befindet sich die Datei noch auf der Festplatte
If fso.FileExists(Dateipfad) Then
WScript.run(|"| & "C:\Temp\" & item.EmbeddedObjects(0).name & |"|)
Else
'Zwischenspeichern und Öffnen des Anhangs
Call obj.ExtractFile(Dateipfad)
WScript.run(|"| & "C:\Temp\" & 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 BatchErstellen( "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
--- Ende Zitat ---
--- Zitat ---Sub BatchErstellen(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
--- Ende Zitat ---
Fedaykin:
Hi Demian
Freut mich wenn ich helfen konnte. Manchmal ist gut ein Problem nicht zu kompliziert lösen zu wollen. ;)
Gruss
Remo
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln