@OPTIONS NOALPHA
IDENTIFICATION DIVISION.
PROGRAM-ID. EXECUTEPROGWAIT.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 STARTUPINFO.
03 CB PIC S9(009) COMP-5.
03 LPRESERVED PIC X(1024).
03 LPDESKTOP PIC X(1024).
03 LPTITLE PIC X(1024).
03 DWX PIC S9(009) COMP-5 VALUE ZERO.
03 DWY PIC S9(009) COMP-5 VALUE ZERO.
03 DWXSIZE PIC S9(009) COMP-5 VALUE ZERO.
03 DWYSIZE PIC S9(009) COMP-5 VALUE ZERO.
03 DWXCOUNTCHARS PIC S9(009) COMP-5 VALUE ZERO.
03 DWYCOUNTCHARS PIC S9(009) COMP-5 VALUE ZERO.
03 DWFILEATTRRIBUTE PIC S9(009) COMP-5 VALUE ZERO.
03 DWFLAGS PIC S9(009) COMP-5 VALUE ZERO.
03 WSHOWWINDOW PIC S9(005) COMP-5 VALUE ZERO.
03 CBRESERVED2 PIC S9(005) COMP-5 VALUE ZERO.
03 LPRESERVED2 PIC S9(009) COMP-5 VALUE ZERO.
03 HSTDINPUT PIC S9(009) COMP-5 VALUE ZERO.
03 HSTDOUTPUT PIC S9(009) COMP-5 VALUE ZERO.
03 HSTDERROR PIC S9(009) COMP-5 VALUE ZERO.
*
01 PROCESS-INFORMATION.
03 HPROCESS PIC S9(009) COMP-5 VALUE ZERO.
03 HTHREAD PIC S9(009) COMP-5 VALUE ZERO.
03 DWPROCESSID PIC S9(009) COMP-5 VALUE ZERO.
03 DWTHREADID PIC S9(009) COMP-5 VALUE ZERO.
*
01 NORMAL-PRIORITY-CLASS PIC S9(009) COMP-5 VALUE 32.
01 INFINITE PIC S9(009) COMP-5 VALUE -1.
*
01 LINHA PIC X(1024).
*
01 STRNULL PIC X(1) VALUE X"00".
01 STRZERO PIC X(001) VALUE X"00".
01 STRUM PIC X(001) VALUE "1".
01 RET PIC S9(009) COMP-5 VALUE 0.
PROCEDURE DIVISION.
MAIN SECTION.
MAIN-00.
*
MOVE "REGSVR32.EXE D:\RPS14_SRC\RELEASE\RPSKEYBOARD.DLL" TO LINHA.
MOVE X"00" TO LINHA(64:1).
MOVE 3143 TO CB.
CALL "CreateProcessA" WITH STDCALL USING
BY VALUE STRNULL
BY REFERENCE LINHA
BY VALUE STRZERO
BY VALUE STRZERO
BY VALUE STRUM
BY VALUE NORMAL-PRIORITY-CLASS
BY VALUE STRZERO
BY VALUE STRNULL
BY REFERENCE STARTUPINFO
BY REFERENCE PROCESS-INFORMATION
RETURNING RET.
CALL "WaitForSingleObject" WITH STDCALL USING
BY VALUE HPROCESS
BY VALUE INFINITE.
CALL "TerminateProcess" WITH STDCALL USING
BY VALUE HPROCESS
BY VALUE STRZERO.
CALL "CloseHandle" WITH STDCALL USING
BY VALUE HTHREAD.
CALL "CloseHandle" WITH STDCALL USING
BY VALUE HPROCESS.
MAIN-95.
MAIN-99.
EXIT.
END PROGRAM EXECUTEPROGWAIT.