Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: OCS am 26.10.05 - 12:51:57
-
Hallo zusammen,
habe ich die Möglichkeit aus Notes heraus nach einer Datei zu suchen? Möchte gerne eine Datei ausführen, die aber je nach Version in einem anderen Verzeichnis liegt. Die Datei könnte Theoretisch an sechs verschiedenen Orten stehen. Gibt es für Dateien so etwas was wie "If c:\windows\test.exe exists then..." oder kann ich klasisch nach einer Datei suchen und diese dann ausführen?
MfG
Björn
-
Hi,
schau die mal Dir[$] - Funktion an.
Axel
-
Erstmal danke für Deine Antwort! Wenn ich das richtig verstanden habe, muss ich aber einen Pfad vorgeben... was ich brauche ist aber der richtige Pfad! Ich erkläre mal genauer: Ich rufe Adobe Acrobat mit Parametern auf... Mein Problem ist aber, das der im Prinzip aber überall auf dem System installiert sein kann...! Bringt mir diese Funktion da überhaupt etwas?
-
In diesem Fall kommst du damit nicht weiter.
Du bräuchtest eine rekursive Funktion zum Suchen einer Datei. Die gibt es in Notes nicht. Eventuell ließe sich so was und Win-API - Funktionen nachbauen.
Alternative wäre die Registry auszulesen. Dort müsste der Pfad irgendwo verbuddelt sein.
Die entsprechenden Routinen zum Auslesen der Registry findest du hier: Can you access Win32 registry keys in LotusScript? (http://www.keysolutions.com/NotesFAQ/canaccess.html)
Könnte auch mit @RegQueryValue über Evaluate gehen.
Axel
-
im prinzip könnte ich aber doch auch sagen:
Sub Click(Source As Button)
Dim session As New NotesSession
Dim komplett As String
Dim search As String
Dim befehl As String
Dim workspace As New NotesUIWorkspace
Dim tmp1 As String
Dim tmp2 As String
Dim tmp3 As String
Dim tmp4 As String
Dim Db As notesdatabase
Dim zwei As String
Set db = session.currentdatabase
Dim doc As New NotesDocument(DB)
Dim taskId As Integer
Dim pathname As String
pathname = Dir$(pathName$, 0)
rc = workspace.Dialogbox ( "Suche",True ,True , , , , , "Leitfaden durchsuchen", doc )
search = doc.docsearch(0)
befehl = |"| + "search=" + search + |"|
'Print doc.docsearch(0)
'befehl = befehl + zwei
tmp1 = "C:\Programme\Adobe\Acrobat 6.0\Reader\AcroRd32.exe /A "
'tmp1 = "|C:\Programme\Adobe\Acrobat 6.0\Reader\AcroRd32.exe /A "
tmp2 = befehl
tmp3 = | "\\192.168.1.6\data\OCS\D_Kommunikation_Loesungen_und_Services\Hotline_und_Support\Arbeitsabläufe und Prozesse\Supportleitfaden_eurexc_automotive_aktuell.pdf"|
'tmp4 = "|"
komplett = tmp1 + tmp2 + tmp3 '+ tmp4
Print komplett
On Error Goto errversion
taskId% = Shell(komplett , 1)
errversion:
tmp1 = "C:\Programme\Adobe\Acrobat 5.0\Reader\AcroRd32.exe /A "
komplett = tmp1 + tmp2 + tmp3 '+ tmp4
Print komplett
taskId% = Shell(komplett , 1)
End Sub
oder so ähnlich halt... Hab keinen Plan vpm Fehlerhandling :-)
-
Du könntest den Reader auch per COM (ich gehe mal davon aus, dass Acrobat das beherrscht) aufrufen - dann sucht der Com-Server Dir den Pfad (bzw. liest die Registry aus und startet das Programm).
-
Ich hätte hier ein Script, dass dir vieleicht auch weiterhelfen könnte. Ich hab´s in LS noch nicht ausprobiert unter VB läufts.
Es diente dem Ausdrucken von PDFs.
Dim AcroApp As CAcroApp
Dim AcroAVDoc As CAcroAVDoc
Dim AcroPDDoc As CAcroPDDoc
Const POSTSCRIPT_LEVEL = 2
Set AcroApp = CreateObject("AcroExch.App")
Set AcroAVDoc = CreateObject("AcroExch.AVDoc")
If AcroAVDoc.Open(strFileName, vbNull) <> True Then
Exit Sub
End If
Set AcroAVDoc = AcroApp.GetActiveDoc
Set AcroPDDoc = AcroAVDoc.GetPDDoc
AcroAVDoc.PrintPages 0, AcroPDDoc.GetNumPages - 1, POSTSCRIPT_LEVEL, True, False
AcroAVDoc.Close True
AcroApp.Exit
Set AcroDoc = Nothing
Set AcroApp = Nothing
Du findest aber auch einige Tutorials diesbezüglich im Netz. Auf www.planetpdf.com haben sich auch schon einige zu diesem Thema ausgelassen.
-
oder so ähnlich halt... Hab keinen Plan vpm Fehlerhandling :-)
Dann schau mal hier: Best Practices: Error Handling in Lotus Script (http://www.atnotes.de/index.php?board=3;action=display;threadid=11980;start=0)
Axel
-
Ich hätte hier ein Script, dass dir vieleicht auch weiterhelfen könnte. Ich hab´s in LS noch nicht ausprobiert unter VB läufts.
Es diente dem Ausdrucken von PDFs.
Dim AcroApp As CAcroApp
Dim AcroAVDoc As CAcroAVDoc
Dim AcroPDDoc As CAcroPDDoc
Const POSTSCRIPT_LEVEL = 2
Set AcroApp = CreateObject("AcroExch.App")
Set AcroAVDoc = CreateObject("AcroExch.AVDoc")
If AcroAVDoc.Open(strFileName, vbNull) <> True Then
Exit Sub
End If
Set AcroAVDoc = AcroApp.GetActiveDoc
Set AcroPDDoc = AcroAVDoc.GetPDDoc
AcroAVDoc.PrintPages 0, AcroPDDoc.GetNumPages - 1, POSTSCRIPT_LEVEL, True, False
AcroAVDoc.Close True
AcroApp.Exit
Set AcroDoc = Nothing
Set AcroApp = Nothing
Du findest aber auch einige Tutorials diesbezüglich im Netz. Auf www.planetpdf.com haben sich auch schon einige zu diesem Thema ausgelassen.
Hallo,
ja ich weis, das hier ist ein altes Thema, aber könnte vielleicht jemand das VB ein bisschen Kommentieren ?
Ich such mich grad dumm und dusslich nach einer guten Beschreibung/Erklärung.
Oder kann mir jemand zeigen wo ich die Attribute und Methoden nachlesen kann ?
Gruß Chris
-
Adobe Acrobat SDK: Interapplication Communication API Reference (http://www.adobe.com/devnet/acrobat/pdfs/iac_api_reference.pdf)
-
Danke!
Das heißt ich brauche für die AcroExch.App Klasse die Acrobat 8.0 sdk Version ?
Ich hab jetzt AdobeReader 8 und Acrobat 7.05 sdk. Aber die Klasse hab ich nicht in der Registry.
Die 8er Version find ich nirgends.