Domino Code Fragment

Code Name*
Can you start a program in Notes and wait for it to finish?
Date*
04/28/2024
Source (or email address if you prefer)*
Rlatulippe@romac.com
IP address:.18.225.209.95
Description*
Starts a program in Lotos Notes
Type*
LotusScript
Categories*
(Misc)
Implementation:
Required Client:
Server:
Limitations:
Comments:
However, note that it is only for Win32 systems. The concept would be the same for other operating systems.
Files/Graphics attachments (if applicable): Code:

Public Type STARTUPINFO
 cb As Long
 lpReserved As String
 lpDesktop As String
 lpTitle As String
 dwX As Long
 dwY As Long
 dwXSize As Long
 dwYSize As Long
 dwXCountChars As Long
 dwYCountChars As Long
 dwFillAttribute As Long
 dwFlags As Long
 wShowWindow As Integer
 cbReserved2 As Integer
 lpReserved2 As Long
 hStdInput As Long
 hStdOutput As Long
 hStdError As Long
End Type


Public Type PROCESS_INFORMATION
 hProcess As Long
 hThread As Long
 dwProcessID As Long
 dwThreadID As Long
End Type


Declare Function WaitForSingleObject Lib "kernel32" (Byval _
 hHandle As Long, Byval dwMilliseconds As Long) As Long


Declare Function CreateProcessA Lib "kernel32" (Byval _
 lpApplicationName As Long, Byval lpCommandLine As String, Byval _
 lpProcessAttributes As Long, Byval lpThreadAttributes As Long, _
 Byval bInheritHandles As Long, Byval dwCreationFlags As Long, _
 Byval lpEnvironment As Long, Byval lpCurrentDirectory As Long, _
 lpStartupInfo As STARTUPINFO, lpProcessInformation As _
 PROCESS_INFORMATION) As Long


Declare Function CloseHandle Lib "kernel32" (Byval _
 hObject As Long) As Long


Public Const NORMAL_PRIORITY_CLASS = &H20&
Public Const INFINITE = -1&


Public Sub ShellAndWait(Byval RunProg As String)
 ' From Kevin Pauli (kcpauli@usa.net)
 Dim RetVal As Long
 Dim proc As PROCESS_INFORMATION
 Dim StartInf As STARTUPINFO
 StartInf.cb = Len(StartInf)
 'Execute the given path
 RetVal = CreateProcessA(0&, RunProg, 0&, 0&, 1&, _
 NORMAL_PRIORITY_CLASS, 0&, 0&, StartInf, proc)


  'Disable this app until the shelled one is done
 RetVal = WaitForSingleObject(proc.hProcess, INFINITE)
 RetVal = CloseHandle(proc.hProcess)
End Sub