Domino 9 und frühere Versionen > ND7: Entwicklung

Anhänge aus Richtextitem starten lassen

<< < (4/4)

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