Verwende ganz einfach statt des LotusScript Shell- Befehls den ShellExecute- Befehl aus der shell32.dll. Denn dieser liefert einen Rückgabewert, und LotusScript wartet, bis das Programm beendet ist:
'-In den Declarations :
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (Byval hwnd As Long, Byval lpOperation As String, Byval lpFile As String, Byval lpParameters As String, Byval lpDirectory As String, Byval nShowCmd As Long) As Long
'-und aufgerufen wird das ganze dann so:
shRet = ShellExecute(0, "Open", "DeinCommand" , 0, 0, 1)
Hallo!
Ich wünsche Euch eine guten Start in die neue Woche!
Leider hat sich mein Problem noch nicht gelöst, der ShellExecute eine Programm zur PDF-Erstellung aufzurufen.
Es geht darum, mit dem netten Tool PDF24 vorhandene PDF-Dateien in ein PDF-Dokument zu packen, um nur einen Dateianhang per Mail wegschicken zu müssen.
Hier mal der Testcode:
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(Byval hwnd As Long, Byval lpszOp As String, _
Byval lpszFile As String, Byval lpszParams As String, _
Byval LpszDir As String, Byval FsShowCmd As Long) As Long
Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
Dim uiDoc As NotesUIDocument
Dim Dateien (3) As String
Dateien(0) = "C:\Temp\Rechnung.pdf"
Dateien(1) = "C:\Temp\Korrespondenz.pdf"
Dateien(2) = "C:\Temp\Bericht.pdf"
Dim Param As String
Dim Result As Integer
Set uiDoc = ws.CurrentDocument
Param = " -join -profile default/good -outputFile C:\Temp\" & uiDoc.FieldGetText("KDNR") & ".pdf " & Join(Dateien, " ")
'Result = Shell("C:\Program Files (x86)\PDF24\pdf24-doctool.exe" + Param ,1)
Result = ShellExecute(0, "Open", "C:\Program Files (x86)\PDF24\pdf24-doctool.exe" + Param, 0, 0, 1)
End Sub
Wenn ich den Code mit Shell ausführe, läuft er problemlos durch und ich erhalte die PDF-Datei.
Wenn ich den gleichen befehl mit ShellExecute absetzen will, erhalte ich Result = 2, was wohl "Datei nicht gefunden" bedeutet. Nur welche Datei findet er denn nicht?
Ich hoffe, Ihr könnt mir noch mal helfen. Danke im voraus!
Frank
Ok, habe es selber herausgefunden.
Die Programmparameter (String "Param") für das Programm pdf24-doctool.exe muss beim ShellExceute in der Parameter-Variable übergeben werden, nicht mit im Parameter für den Programmaufruf.
Eigentlich logisch... ;D
Result = ShellExecute(0, "Open", "C:\Program Files (x86)\PDF24\pdf24-doctool.exe", Param, 0, 1)
Danke normals!